[英]Check if value exists in List<List<objects>> in java?
我想检查List<List<objects>>
List<<>>
是否存在对象,如果找到该对象则返回List<<>>
的索引。
例如:
List<List<Integer>> listOfLists = new ArrayList<>();
List<Integer> listOne = new ArrayList<>();
listOne.add(1);
listOne.add(9);
listOfLists.add(listOne);
List<Integer> listTwo = new ArrayList<>();
listTwo.add(5);
listTwo.add(7);
listOfLists.add(listTwo);
现在我想找到9是否存在,如果是这样,在listoflists中返回它的索引是'0'并且是否应该对它进行任何修改以使用自定义对象?
您可以使用流来检查列表中是否存在对象
boolean has = listOfLists.stream().anyMatch(e -> e.contains(Integer.valueOf(9)));
如果你发现任何匹配,你可以得到索引
List<Integer> list = listOfLists.stream().filter(e -> e.contains(Integer.valueOf(9))).findAny().get();
int index = listOfLists.indexOf(list);
在这个例子中,列表是通用的<Integer>
,我正在寻找一个特定的Integer,即Integer.valueOf(9)
但你可以根据你的目的进行调整......
如果你可以使用番石榴:
return Iterables.indexOf(listOfLists, innerList -> innerList.contains(9));
这将返回找到的第一个对象的索引,如果未找到,则返回-1。
如果您的列表包含自定义对象而不是Integer,则代码完全相同; 它依赖于具有正确定义的equals()
方法的自定义对象。
循环遍历列表,如果包含,则返回索引
for(List<Integer> list : listoflists){
if(list.contains(9)){
return listoflists.indexOf(list);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.