假设我有一个List<Car>, 我想知道里面是否包括:Civic和Focus。现在我是filter两次,但想知道有没有更好的方案:
boolean isCivic = reportElements.stream()
.filter(car -> "Civic".equals(car.getModel()))
.findFirst()
.isPresent();
boolean isFocus = reportElements.stream()
.filter(car -> "Focus".equals(car.getModel()))
.findFirst()
.isPresent();
return isCivic && isFocus;
2 回答
猛跑小猪
TA贡献1858条经验 获得超8个赞
这是我在StackOverflow上看到的一个题目:一个比较标准的答案是:
return list.stream()
.map(Car::getModel)
.filter(m -> m.equals("Focus") || m.equals("Civic"))
.distinct()
.limit(2)
.count() == 2;
HUWWW
TA贡献1874条经验 获得超12个赞
boolean[] contains = new boolean[2];
int sum = reportElements.stream().forEach(car -> {
if ("Civic".equals(car.getModel())) contains[0] = true;
if ("Focus".equals(car.getModel())) contains[1] = true;
}
);
return contains[0] && contains[1];
说实话,毕竟你就俩个,怎么写都没啥意思
添加回答
举报
0/150
提交
取消