我想检查 List
是否包含一个具有特定值的字段的对象。现在,我可以使用循环进行检查,但我很好奇是否有更高效的代码。
就像是;
if(list.contains(new Object().setName("John"))){
//Do some stuff
}
我知道上面的代码没有做任何事情,它只是为了大致展示我想要实现的目标。
另外,为了澄清,我不想使用简单循环的原因是因为此代码当前将进入循环内部的循环内部循环内部。为了可读性,我不想继续向这些循环添加循环。所以我想知道是否有任何简单的(ish)替代品。
原文由 Rudi Kershaw 发布,翻译遵循 CC BY-SA 4.0 许可协议
流
如果您使用的是 Java 8,也许您可以尝试以下方法:
或者,您可以尝试这样的事情:
此方法将返回
true
如果List<MyObject>
包含一个MyObject
名称为name
如果你想对每个MyObject
s thatgetName().equals(name)
执行操作,那么你可以尝试这样的事情:其中
o
代表MyObject
实例。或者,正如评论所建议的(感谢 MK10),您可以使用
Stream#anyMatch
方法: