Modyfikacja wartości obiektu na liście

0

Hej.
Witam wszystkich.

Piszę kod do testu obsługi sklepu internetowego.
Dodaje radomowo produkty do koszyka itd.
Nie potrafię przejść przez jedną rzecz.
Mianowicie, kiedy wykonuję kilka zamówień chcę aby w przypadku kilkukrotnego zamówienia tego samego produktu, ten nie powielał mi się na liście w której przechowuję zamówienia, ale aby jedynie zaktualizowała mi się jego ilość. Obecnie bez przerwy, niezależnie jakbym zmodyfikował swój kod, wyświetla mi się nie np Pepsi 2 , Chleb 1, Jabłko 1 ale Pepsi 1, Chleb 1, Jabłko 1, Pepsi 1.
Próbowałem ze zwyczajnymi instrukcjami warunkowymi a teraz próbuję ze streamem.
Klasa CartConsistence to klasa z zaimplementowanym project builderem.

public static List<CartConsistence> cartConsistenceList = new ArrayList<>();

public static void addToCartConsistenceList(String cName, double cPrice, int cQuantity){
    Stream<CartConsistence> stream = cartConsistenceList.stream();
    if(cartConsistenceList.stream().filter(e->e.getName().equals(cName))) {
        stream.filter(e -> e.getName().equals(cName))
                .findFirst().ifPresent(e->e.setQuantity(cQuantity + e.getQuantity()));
    }else {
        cartConsistenceList.add(new CartConsistence(new CartConsistence.Builder()
                .buildName(cName).buildPrice(cPrice).buildQuantity(cQuantity)));
    }
}
0

A to się w ogóle kompiluje? :)
Warunek w if nie zwraca true/false tylko przefiltrowany Stream.

Spróbuj sobie przepisać ten kod - może na początek bez użycia strumieni. Powydzielaj sobie metody np. contains(String name), changeQuantity itd, będzie łatwiej :) Nie idź jeszcze w strumienie, to nie ten moment

1

Dlaczego używasz listy zamiast mapy? Imo o wiele lepsza struktura dla koszyka

1 użytkowników online, w tym zalogowanych: 0, gości: 1