繁体   English   中英

检查清单 <Object> 包含一个属性

[英]Check if a List<Object> contains a property

我在Java中有以下列表

List<MyObject> =[id ="id", name= "name", time =DateObj, id = "id2", name = "name2".. ]

我想检查此列表是否包含“ name2”,而不必遍历该列表。 是否有可用的API在Java中实现此目标?

没有循环就无法做到这一点。 但是,当然,循环可以由库方法完成,而不是由您完成。

最简单的方法是使用Java 8流:

boolean name2Exists = list.stream().anyMatch(item -> "name2".equals(item.getName()));

在这种情况下HashMap<String,MyObject>可以使用HashMap<String,MyObject>

如果要根据名称进行检查。 然后使用name作为HashMap中的键。

HashMap<String, MyObject> map = new HashMap<String, MyObject>();
map.put(obj.getName(), obj);

要检查地图是否包含特定值。

if (map.containsKey("name2")) {
     // do something
}

如果MyObject是您自己的类,则可以适当地重写equals(和哈希码)方法。 因此,您可以使用标准方法list.contains

List<MyObject> myObjectList = ...;
...
MyObject objectToBeFound = new MyObject("name2", ...);
if (myObjectList.contains(objectToBeFound))
{
    //object is in the list
}
else
{
    //it is not in the list
}

PS。 但是实际上,总会有某种依赖于List实现的循环。 其中一些可能会进行简单的迭代。 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM