Java8 lambda是否从列表中删除元素<&燃气轮机;并更新布尔标志值

Java8 lambda是否从列表中删除元素<&燃气轮机;并更新布尔标志值,java,lambda,collections,java-8,Java,Lambda,Collections,Java 8,当我从列表中删除某个对象时,我必须设置一个标志nameRemoved=true 这就是我在这里使用的传统方法 List<String> list = new ArrayList<String>(); if (list.contains("abc")) { list.remove("abc"); nameRemoved=true } RemoveIf返回一个布尔值,因此您可以执行以下操作: List<Stri

当我从
列表中删除某个对象时,我必须设置一个标志
nameRemoved=true

这就是我在这里使用的传统方法

List<String> list = new ArrayList<String>();
if (list.contains("abc")) {
    list.remove("abc");
    nameRemoved=true
}


RemoveIf
返回一个布尔值,因此您可以执行以下操作:

List<String> list = new ArrayList<String>();
boolean nameRemoved = list.removeIf(name -> "abc".equalsIgnoreCase(name));
List List=new ArrayList();
布尔名称removed=list.removeIf(name->“abc”.equalsIgnoreCase(name));

List List=new ArrayList();
布尔名称removed=list.removeIf(“abc”::equalsIgnoreCase);

RemoveIf
返回一个布尔值,因此您可以执行以下操作:

List<String> list = new ArrayList<String>();
boolean nameRemoved = list.removeIf(name -> "abc".equalsIgnoreCase(name));
List List=new ArrayList();
布尔名称removed=list.removeIf(name->“abc”.equalsIgnoreCase(name));

List List=new ArrayList();
布尔名称removed=list.removeIf(“abc”::equalsIgnoreCase);

根据op的要求,我将我的评论作为回答。 因为如果删除了任何元素,removeIf将返回true,因此可以根据结果设置标志

nameRemoved=list.removeIf(name->name.equalsIgnoreCase(“abc”))
或更安全,并带有方法参考:

nameRemoved=list.removeIf(“abc”::equalsIgnoreCase);
编辑:
正如@Holger所评论的,这个答案只关注如何用removeIf替换代码。但这段代码与第一段代码大不相同。第一种方法只从列表中删除一个与给定字符串完全匹配的元素。我提供的一个将删除所有匹配的元素,忽略案例。

根据op的要求,我将我的评论作为答案。 因为如果删除了任何元素,removeIf将返回true,因此可以根据结果设置标志

nameRemoved=list.removeIf(name->name.equalsIgnoreCase(“abc”))
或更安全,并带有方法参考:

nameRemoved=list.removeIf(“abc”::equalsIgnoreCase);
编辑:
正如@Holger所评论的,这个答案只关注如何用removeIf替换代码。但这段代码与第一段代码大不相同。第一种方法只从列表中删除一个与给定字符串完全匹配的元素。我提供的一个将删除所有匹配的元素,忽略大小写。

nameRemoved=list.removeIf(名称->名称.equalsIgnoreCase(“abc”))或更安全的removedName=test.removeIf(“abc”)::equalsIgnoreCase);您的“传统方法”不区分大小写,只删除了一个实例,因此它与您的
removeIf(…)
示例完全不同。它们唯一的共同点是忽略返回值。第一个代码可以简单地编写为
nameRemoved=list.remove(“abc”)
nameRemoved=list.removeIf(name->name.equalsIgnoreCase(“abc”)或safe-removedName=test.removeIf(“abc”)::equalsIgnoreCase);您的“传统方法”不区分大小写,只删除了一个实例,因此它与您的
removeIf(…)
示例完全不同。它们唯一的共同点是忽略返回值。第一个代码可以简单地编写为
nameRemoved=list.remove(“abc”)
可能引发一个
NPE
您应该反向比较
“abc”。equalsIgnoreCase(名称)
可能引发一个
NPE
您应该反向比较
“abc”。equalsIgnoreCase(名称)
List<String> list = new ArrayList<String>();
boolean nameRemoved = list.removeIf("abc"::equalsIgnoreCase);