检查List <object>是否包含属性

时间:2015-10-21 13:06:18

标签: java list contains

我在java中有以下列表

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

我想检查这个列表是否包含&#34; name2&#34;无需遍历列表。是否有可用于在Java中实现此目的的API?

3 个答案:

答案 0 :(得分:17)

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

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

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

答案 1 :(得分:0)

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

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

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

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

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

答案 2 :(得分:0)

如果MyObject是您自己的类,您可以适当地重写方法equals(和hashcode)。因此,您可以使用标准方法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实现的循环。其中一些可能会进行普通迭代。 :)