怎么验证一个集合里是否有两个元素?

假设我有一个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;
阅读 3k
2 个回答

这是我在StackOverflow上看到的一个题目:一个比较标准的答案是:

return list.stream()
           .map(Car::getModel)
           .filter(m -> m.equals("Focus") || m.equals("Civic"))
           .distinct()
           .limit(2)
           .count() == 2;
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];

说实话,毕竟你就俩个,怎么写都没啥意思

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题