首页 > 解决方案 > Java List.contains(ArrayList字段值等于 x)

问题描述

使用下面的代码,我可以检查一个List对象是否包含匹配特定值的字段。

public boolean containsName(final List<MyObject> list, final String name){
    return list.stream().filter(o -> o.getName().equals(name)).findFirst().isPresent();
}

但是,这仅在o.getName()返回 a时有效String。我正在尝试修改代码,以便在MyObject包含ArrayList<String>和名称可以匹配列表中的任何元素时起作用。像这样的东西:

public boolean containsKeyword(final List<KeywordPOJO> list, final String keyword){
    return list.stream().filter(o -> o.getKeywordList().equals(keyword)).findFirst().isPresent();
}

WhereKeywordPOJO返回关键字列表而不是单个String. 如果keyword匹配任何这些关键字方法应该返回 true。

目前,Eclipse 会抛出警告:(Unlikely argument type for equals(): String seems to be unrelated to ArrayList<String>因为关键字是 String 并且getKeywordList()返回ArrayList<String>

谢谢!

标签: javalistsearchcontains

解决方案


尝试更换:

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

经过:

list.stream().filter(o -> o.getKeywordList().contains(keyword)).findFirst().isPresent();

或更短:

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

推荐阅读