可以将此问题视为基于java 8嵌套流
假设我有一个Batch与Baskets的ItemS:
public class Batch {
private List<Basket> baskets;
}
public class Basket {
private List<Item> items;
}
public class Item {
private String property;
private int value;
}
Run Code Online (Sandbox Code Playgroud)
我想用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;
}
}
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
我想去的第一步:
public int findValueInBatch(Batch batch) {
for …Run Code Online (Sandbox Code Playgroud) 我有一个带有其他对象列表的对象,每个其他对象都有一个列表等。我需要在层次结构中找到层次结构中具有匹配某个值的属性的第一个(也是唯一的)最后一个元素。看到我现在的代码会更清楚:
@Override
public Poste findByNumeroAndMillesime(String numero, Millesime millesime) {
return millesime
.getDivisions()
.stream()
.filter(
division -> division
.getGroupes()
.stream()
.filter(
groupe -> groupe
.getClasses()
.stream()
.filter(
classe -> classe
.getSousClasses()
.stream()
.filter(
sousClasse -> sousClasse
.getPostes()
.stream()
.filter(poste -> numero.equals(poste.getNumero()))
.findFirst()
.get()
))));
}
Run Code Online (Sandbox Code Playgroud)
我需要返回与作为参数传递的数字相同的 Poste。
提前致谢。