【发布时间】:2019-03-23 10:35:55
【问题描述】:
我有一个包含一些字符串值的列表。我想迭代列表与另一个字符串进行比较。只有当另一个字符串与列表中的任何元素都不匹配时,我才应该进入循环。我尝试了类似下面的方法,但没有奏效。在 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");
}
【问题讨论】:
-
您的逻辑是错误的:它会测试列表中是否至少有一个元素与“test”不同。使用
Stream.noneMatch()。 docs.oracle.com/javase/8/docs/api/java/util/stream/… -
标题中的使用isPresent 方法 真的是an XY problem。查看链接,了解如何改进有关 Stack Overflow(和其他地方)的下一个问题。
标签: java lambda java-8 java-stream