You will have to create a java bean with all the fields you require [like product name, price, ID etc], and as and when the user purchases one, you will have to populate this bean with the right data. For this you cannot use any standard data structure, as only you know what your application requires.
However, there should be some way to persist this data so that you can use this for a report generation. From your question, I understand that you are not using a database... so where else ? Does "in memory" mean, you are planning to use the session object to hold this data ? If yes, then it is a bad idea, but if you insist, then you can add an implementation of List object [arraylist, linkedlist etc] to the session, and as and when a product object is created, you can add it as a node to this list.