Kezdőoldal » Számítástechnika » Programozás » Hogy lehetne ezt stream()-el...

Hogy lehetne ezt stream()-el megoldani? (Java)

Figyelt kérdés

[link]


A pizza osztálynak van egy totalPrice metódusa, ami visszatér a pizzaalap ára és a toppingok árainak összegével. Azonban a tanár a példametódust foreach ciklussal csinálta. A programot gyakorlásképpen kiegészítettem egy Order osztállyal, aminek van egy Pizza típusú listája, egy String megrendelőnév és egy String megrendelőcím mezője.


Az Order osztálynak van egy csináltam egy rendelésösszeg függvényt, aminek a feladata, hogy a megrendelésben lévő pizzák árainak összegével visszatérjen. Ezt a példa alapján simán meg tudtam csinálni for ciklussal, mivel ismerem a sorozatszámítás/összegzés programozási tételt, illetve a példakódban is volt egy más dolog összege. Viszont most, hogy C#-ból LINQ-t gyakorlunk már, java-ból pedig a stream() metódusok magabiztos használata lenne a cél, ezért szeretném azzal megcsinálni, de nem jövök rá, hogy kellene megírni.


[link]


Ellenben az adott címre rendelt pizzák listáját szerintem sikerült kigyűjtenem a lent látható függvénnyel, gondolom, az én problémámra is egy collect majd egy sum lesz a megoldás, de sajnos a konkrét kódot nem sikerült megírnom, pedig csak egy sor lenne. :D


public List<Pizza> getPizzasOfAddress(String address) {

return pizzas.stream().filter(p -> p.getOrdererAddress().equals(address)).collect(Collectors.toList());

}


2022. jan. 2. 10:53
 1/4 A kérdező kommentje:
*Az Order osztálynak csináltam egy
2022. jan. 2. 10:54
 2/4 anonim ***** válasza:
100%

Használhatod például a reduce-t

* [link]


Vagy a mapToInt-et amelyet szintén megtalálhatsz a fentebbi linken.


Érdemes lenne egy getter-t írnod a totalPrice propertyhez (ha még nincs: getTotalAmount), és akkor használhatod így:


pizzas.stream().mapToInt(Pizza::getTotalAmount).sum();

2022. jan. 2. 11:04
Hasznos számodra ez a válasz?
 3/4 anonim ***** válasza:
100%
2022. jan. 2. 11:04
Hasznos számodra ez a válasz?
 4/4 A kérdező kommentje:

Köszi, remélem jó lesz.


return pizzas.stream().mapToInt(Pizza::totalPrice).sum();

2022. jan. 2. 11:17

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!