這個問題可以基於考慮java 8 nested streams的Java 8嵌套流:在最後一個流返回值
假設我有一個Batch
與Basket
s的Item
S:
public class Batch {
private List<Basket> baskets;
}
public class Basket {
private List<Item> items;
}
public class Item {
private String property;
private int value;
}
我想用Java 8流重寫此方法。
public class SomeService {
public int findValueInBatch(Batch batch) {
for (Basket basket : batch.getBaskets()) {
for (Item item : basket.getItems()) {
if (item.getProperty().equals("someValue") {
return item.getValue();
}
}
}
return 0;
}
}
我應該怎麼做?
第一步,我想哪裏去:
public int findValueInBatch(Batch batch) {
for (Basket basket : batch.getBaskets()) {
basket.getItems().stream()
.filter(item -> item.getProperty.equals("someValue")
.findFirst()
.get();
// there I should 'break'
}
}
非常感謝。
您的原始方法不會編譯。 – shmosel
@shmosel true,我缺少括號item.getProperty()和一個返回值,如果沒有找到元素。目標是顯示原則。固定。 – user3165278