Java List.contains(字段值等于x的ArrayList<;String>;)

Java List.contains(字段值等于x的ArrayList<;String>;),java,list,search,contains,Java,List,Search,Contains,使用下面的代码,我可以检查对象的列表是否包含与特定值匹配的字段 public boolean containsName(final List<MyObject> list, final String name){ return list.stream().filter(o -> o.getName().equals(name)).findFirst().isPresent(); } 其中KeywordPOJO返回关键字列表,而不是单个字符串。如果关键字与这些关键字中的

使用下面的代码,我可以检查对象的
列表
是否包含与特定值匹配的字段

public boolean containsName(final List<MyObject> list, final String name){
    return list.stream().filter(o -> o.getName().equals(name)).findFirst().isPresent();
}
其中
KeywordPOJO
返回关键字列表,而不是单个
字符串。如果
关键字
与这些关键字中的任何一个匹配,则该方法应返回true

目前,Eclipse发出警告:
equals()不太可能的参数类型:String似乎与ArrayList无关(因为关键字是字符串,
getKeywordList()
返回
ArrayList


谢谢

您只需使用
列表。包含

o -> o.getKeywordList().contains(keyword);
作为旁注,您的表达式可以使用
流进行简化。anyMatch

public boolean containsKeyword(final List<KeywordPOJO> list, final String keyword){
    return list.stream().anyMatch(o -> o.getKeywordList().contains(keyword));
}
public boolean containsKeyword(最终列表,最终字符串关键字){
return list.stream().anyMatch(o->o.getKeywordList().contains(关键字));
}

您可以简单地使用
列表。包含:

o -> o.getKeywordList().contains(keyword);
作为旁注,您的表达式可以使用
流进行简化。anyMatch

public boolean containsKeyword(final List<KeywordPOJO> list, final String keyword){
    return list.stream().anyMatch(o -> o.getKeywordList().contains(keyword));
}
public boolean containsKeyword(最终列表,最终字符串关键字){
return list.stream().anyMatch(o->o.getKeywordList().contains(关键字));
}
尝试更换:

list.stream().filter(o -> o.getKeywordList().equals(keyword)).findFirst().isPresent();
作者:

或更短:

list.stream().anyMatch(o -> o.getKeywordList().contains(keyword));
尝试替换:

list.stream().filter(o -> o.getKeywordList().equals(keyword)).findFirst().isPresent();
作者:

或更短:

list.stream().anyMatch(o -> o.getKeywordList().contains(keyword));

谢谢如果
关键字
实际上是一个
列表
,而不是
字符串
,该怎么办
list.stream().anyMatch(o->o.getKeywordList().contains(keywordList))
将不起作用。@S.o.S在这种情况下,您可以使用
.containsAll(keywordList)
(假设您希望检查所有关键字都存在),但如果列表中的任何一个关键字匹配,我希望它返回true。。我相信
containsAll(关键字列表)
只有在所有匹配的情况下才会返回true。。对吗?@S.O.S没错(这就是为什么我添加了…假设…)。如果要检查列表是否包含至少一个关键字,可以使用
return list.stream().anyMatch(o->o.getKeywordList().stream().anyMatch(o::equals))
(请注意空列表,因为如果流为空,则
anyMatch
将返回
true
,我想)感谢您的回复。只想澄清一件事:
return list.stream().anyMatch(o->o.getKeywordList().stream().anyMatch(o::equals))
这将评估列表中的
KeywordPOJO
是否包含任何包含
keywordList
中任何关键字的对象(参数)?该方法将接受以下参数:
final List,final ArrayList关键字列表
谢谢。如果
关键字
实际上是一个
列表
,而不是
字符串
,该怎么办
list.stream().anyMatch(o->o.getKeywordList().contains(keywordList))
将不起作用。@S.o.S在这种情况下,您可以使用
.containsAll(keywordList)
(假设您希望检查所有关键字都存在),但如果列表中的任何一个关键字匹配,我希望它返回true。。我相信
containsAll(关键字列表)
只有在所有匹配的情况下才会返回true。。对吗?@S.O.S没错(这就是为什么我添加了…假设…)。如果要检查列表是否包含至少一个关键字,可以使用
return list.stream().anyMatch(o->o.getKeywordList().stream().anyMatch(o::equals))
(请注意空列表,因为如果流为空,则
anyMatch
将返回
true
,我想)感谢您的回复。只想澄清一件事:
return list.stream().anyMatch(o->o.getKeywordList().stream().anyMatch(o::equals))
这将评估列表中的
KeywordPOJO
是否包含任何包含
keywordList
中任何关键字的对象(参数)?该方法将接受以下参数:
final List,final ArrayList关键字列表