Basit bir örnekle kafamı Java 8 akışları sözdizimini elde etmeye çalışıyorum. Bu konuyla ilgili diğer benzer sorulara bir göz attım, ama benim örneğimle eşleşecek ve benim için çalışacak herhangi bir çözüm bulamadım. Temelde ben yeni akış API kullanmak için iç içe geçmiş iki döngüler ile şu ön planı ayrı çalışıyorum: YönetilenJava 8 yuvalanmış döngüler yayınlanacak
List<Car> filteredCars = new ArrayList<>();
for (Car car : cars) {
for (Wheel wheel : wheels) {
if (car.getColor() == wheel.getColor() &&
wheel.isWorking() == true) {
filteredCars.add(car);
break;
}
}
}
return filteredCars;
geçersiz döndürür bu ile gelip:
return cars.stream().forEach(
car -> wheels.stream()
.filter(wheel -> wheel.getColor() == car.getColor() &&
wheel.isWorking() == true)
.collect(Collectors.toList()));
Ne akışı yanlıştır Yukarıdaki sözdizimi ve ne eksik?
:
Sen istenen sonuçları elde etmek süzülmüş akışta
cars
akışıfilter
kullanmak ve kullanımınıcollect
toplamak olabilir tavsiye, ilk bakışta 'forEach' davranışını durdurun. Bunu anladıktan ve her zaman önce diğer akış işlemlerine baktıktan sonra, artık böyle bir soru sormak zorunda kalmayacaksınız. Bunun yanı sıra, 'wheel.isWorking() == true' gibi koşullu kullanmayın, bunlar anlamsızdır. Sadece 'wheel.isWorking()' kullanın, kendisi için konuşur. – Holger