我有一个场景,我需要维护一个列表列表并根据它进行一些操作。我想获得以下类型的列表:
[{peter,se,red},{peter,da,red},{mark,se,red}]
我首先创建一个List以获取值,然后将该列表插入列表列表(如果它尚不存在)。例如,如果再次出现{peter,se,red},则不应插入。已提供以下代码段:
ArrayList<ArrayList<String>> listOfList = new ArrayList<ArrayList<String>>();
ArrayList<String> singleList = new ArrayList<String>();
void someFunction() {
singleList.add("val1");
singleList.add("val2");
singleList.add("val3");
if(listOfList.containsAll(singleList)) {
<<some operation>>
} else {
listOfList.add(singleList);
<<some operation>>
}
//clearing the list, so it can be freshly used
//upon successive invocation of the function
singleList.clear();
现在,即使我两次通过相同的列表,系统也会坚持使用其他部分。有人可以告诉我哪里出错了。另外,还有另一种更好的方法来实现这项任务吗?
答案 0 :(得分:1)
您可以使用HashSet<ArrayList<String>>
,也许这会有用吗?或者您可以使用.contains()
方法检查List是否包含元素而不是containsAll
答案 1 :(得分:0)
请尝试以下方法:
if(listOfList.contains(singleList)) {
<<some operation>>
} else {
listOfList.add(singleList);
<<some operation>>
}
关键是,您将使用 contains()方法而不是 containsAll()方法。
containsAll()正在检查对象集合。在这种情况下,列表集合,您只需提供一个列表。