java - 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>
)
谢谢!
解决方案
尝试更换:
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));
推荐阅读
- ios - UIColor colorWithDisplayP3RGBA 转换为 CGColor 失去广色域
- java - SecureRandom setSeed 方法在 MacOS 上失败
- azure - 为什么我在为 Runbook 创建 Webhook 时遇到授权失败异常?
- apache - Imgur、Google、Facebook 等网站如何管理这么多独立的网络服务器?
- javascript - 使用javascript(或jquery)在json文件中查找当前成员总数
- javascript - Node.js:在 while-true 循环中承诺
- azure-active-directory - Msal.js getUser() 返回 null
- theorem-proving - 初学者,无法导入精益
- servlets - 如何在没有 web.xml 的情况下使用 JEE7 返回 index.html 页面
- python - tensorflow - object-detection.pbtxt; 没有这样的文件或目录