我有一个包含一些字符串值的列表。我想迭代列表与另一个字符串进行比较。只有当另一个字符串与列表中的任何元素都不匹配时,我才应该进入循环。我尝试了类似下面的方法,但没有用。在 Java 8 中执行相同操作的任何其他替代方法?
注意:在循环中,我向同一个列表添加了更多元素。因此,为避免 ConcurrentModificationException
,我使用 if 条件进行验证。
List<String> mylist = new ArrayList<>();
mylist.add("test");
mylist.add("test1");
if(mylist.stream()
.filter(str -> !(str.equalsIgnoreCase("test")))
.findFirst()
.isPresent()) {
System.out.println("Value is not Present");
}
最佳答案
您应该为此使用 Stream#noneMatch
。它将使您的代码更具可读性和简洁性。另外,尽量避免在 if 语句中放入太多逻辑,在可读变量中提取最大值
List<String> mylist = new ArrayList<>();
mylist.add("test");
mylist.add("test1");
Predicate<String> equalsIgnoreCasePredicate = str -> str.equalsIgnoreCase("test");
boolean noneMatchString = mylist.stream().noneMatch(equalsIgnoreCasePredicate);
if (noneMatchString) {
System.out.println("Value is not Present");
}
关于java - 使用 isPresent 方法在 Java8 中列出过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55312815/