我有一个包含一些String值的列表。我想与另一个String进行比较的列表。仅当另一个String与列表中的任何元素都不匹配时,我才应进入循环。我尝试了以下类似方法,但没有成功。还有其他替代方法可以在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");
}
答案 0 :(得分:9)
您应该使用noneMatch()
if (mylist.stream().noneMatch(str -> str.equalsIgnoreCase(testString))) {
System.out.println("Value is not Present");
}
答案 1 :(得分:9)
您应该为此使用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");
}
答案 2 :(得分:-1)
无需使用Stream
API即可实现上述目的。下面是一个可能的解决方案
String searchValue = "COW";
List<String> list = Arrays.asList("CAT", "DOG");
if(!list.contains(searchValue)){
System.out.println("Value is not Present");
}