Det låter ju som att det är en skoluppgift, så jag ska försöka att inte ge ut hela lösningen.
Det jag hade gjort först, är bestämma hur en kundvagn och en produkt representeras. Det enklaste sättet är självklart att enbart hålla t.ex. en Map med strängar av produktens namn som nyckel samt kvantitet som värde.
Exempel:
Map<String, Integer> basket = new HashMap<String, Integer>();
...
basket.put("Gurka", 1); //Lägger till en gurka till kundvagnen
Fördelen med en Map gentemot t.ex. en List, är att nycklarna (produktnamnen) är unika vilket gör det lättare att hålla reda på produkterna. För att se om en produkt redan finns i kundvagnen har du metoden Map.containsKey(key) till hjälp, och för att hämta ut ett värde har du metoden Map.get(key). För att iterera över kundvagnen använder du Map.keySet() och sedan Map.get(key).
Men! Även om ovanstående är enkelt och snabbt att implementera, hade jag gärna gjort det lite mer funktionellt och flexibelt. Nu återkommer vi till hur produkter och kundvagn representeras - i min värld är dom självklart egna klasser. För att dra det ännu längre, skulle man kunna ha en produkt som ett interface, då en produkt är relativt abstrakt. Då skulle man kunna ha implementationer av produkter som viktvara eller styckvara, där priset kräver egen logik.
Med en klass/interface Product, med egen logik per implementation, borde det vara vettigt med en egen klass för en kundvagn också - där vi kan bygga in funktionalitet för att lägga till en vara/ta bort/uppdatera antal/etc. Som en privat instansvariabel kan vi fortfarande använda en Map dock, men nu som Map<Product, Integer>.
Förhoppningsvis fick du lite uppslag!