Java 检查是否有一个列表<;对象>;包含一个属性
我有下面的java列表Java 检查是否有一个列表<;对象>;包含一个属性,java,list,contains,Java,List,Contains,我有下面的java列表 List<MyObject> =[id ="id", name= "name", time =DateObj, id = "id2", name = "name2".. ] List=[id=“id”,name=“name”,time=DateObj,id=“id2”,name=“name2”。] 我想检查这个列表是否包含“name2”,而不必在列表中循环。在Java中是否有可以实现这一点的API?没有循环就无法做到这一点。当然,循环可以通过库方法完成,而
List<MyObject> =[id ="id", name= "name", time =DateObj, id = "id2", name = "name2".. ]
List=[id=“id”,name=“name”,time=DateObj,id=“id2”,name=“name2”。]
我想检查这个列表是否包含“name2”,而不必在列表中循环。在Java中是否有可以实现这一点的API?没有循环就无法做到这一点。当然,循环可以通过库方法完成,而不是由您完成 最简单的方法是使用Java 8流:
boolean name2Exists = list.stream().anyMatch(item -> "name2".equals(item.getName()));
在这种情况下,可以使用HashMap
如果要根据名称进行检查。然后使用name作为HashMap中的键
HashMap<String, MyObject> map = new HashMap<String, MyObject>();
map.put(obj.getName(), obj);
如果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
}
List myObjectList=。。。;
...
MyObject objectToBeFound=新的MyObject(“名称2”,…);
if(myObjectList.contains(objectToBeFound))
{
//对象在列表中
}
其他的
{
//它不在名单上
}
但实际上,无论如何都会有某种依赖于列表实现的循环。其中一些可能会执行简单的迭代。:) 如果您创建一个包含对象名称和值MyObject的HashMap,那么使用Map可能是个好主意。其中key是您知道的字段和值,这甚至不是Java代码。我猜
MyObject
包含id
、name
和time
?如果是这样的话,要么使用单独的映射,要么只是迭代列表元素并检查每个元素。该死,流太神奇了。
List<MyObject> myObjectList = ...;
...
MyObject objectToBeFound = new MyObject("name2", ...);
if (myObjectList.contains(objectToBeFound))
{
//object is in the list
}
else
{
//it is not in the list
}