假設我有一個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
提交
取消