Java 正在尝试检查arraylist是否是另一个列表的子集
我试图实现一个简单的检查,看看arraylist是否是另一个列表的子集 在我的两个列表中有以下元素,list1[A F K]和list2[B A C F K]。list1的所有元素都在list2中,因此它应该返回trueJava 正在尝试检查arraylist是否是另一个列表的子集,java,arraylist,Java,Arraylist,我试图实现一个简单的检查,看看arraylist是否是另一个列表的子集 在我的两个列表中有以下元素,list1[A F K]和list2[B A C F K]。list1的所有元素都在list2中,因此它应该返回true 我尝试使用list1.containsAll(list2),但它没有给出正确的答案 我尝试在这两个列表中循环,如果找到匹配项,我将清空第一个列表中的位置,但它不起作用,因为我认为它会受到并发修改的影响。这是我的密码 公共静态布尔IsubSet(TreeNode t1、TreeN
我尝试使用list1.containsAll(list2),但它没有给出正确的答案 我尝试在这两个列表中循环,如果找到匹配项,我将清空第一个列表中的位置,但它不起作用,因为我认为它会受到并发修改的影响。这是我的密码 公共静态布尔IsubSet(TreeNode t1、TreeNode t2){
ArrayList子卷轴列表=新建ArrayList();
ArrayList mainTreeList=新建ArrayList();
树形卷轴列表(t1,子卷轴列表);
树木积脓学家(t2,主要树木学家);
int mainTreeSize=mainTreeList.size();
对于(int i=0;i
在这里,子卷列表最终输出[A]。我知道它会跳过中间的元素,因为当我删除size元素时,它也会被修改。我如何着手解决这个问题,以便最终得到一个空列表。您使用
containsAll
的顺序是向后的
您试图确定list2
是否包含list1
中的所有元素,而不是list1
是否包含list2
中的所有元素
只要将其反转,它就会对您有效。“我尝试使用list1.containsAll(list2),但它没有给出正确的结果。”-您认为这是为什么?查看您的代码……我看不出它是如何迭代的。您正在用一个空的
ArrayList
实例化subTreeList
,所以我不相信它会迭代。也就是说,除非这里有你不想分享的东西;在这种情况下,我也鼓励您发布您尝试的包含所有的旧方法。对不起,我没有给出完整的代码。实际上,我有一个helper方法来填充这两个列表。我将编辑编解码器,谢谢。我还试图在if条件为true时增加一个计数器,当计数器达到初始列表大小时,我返回true。if(subtrelist.get(i).equals(mainTreeList.get(j)){counter++;}返回(counter==subTreeSize);我也用你的建议解决了这个问题,但现在我很好奇,如果我尝试用remove方法来解决并发修改的问题,我会如何解决这个问题。我应该怎么做才能在我的初始代码中修复它?@JimZilla使用迭代器并删除它的方法。但是,如果你有任何其他问题与这个问题无关,请问另一个问题。
ArrayList<String> subTreeList = new ArrayList<String>();
ArrayList<String> mainTreeList = new ArrayList<String>();
treeCopyToList(t1,subTreeList);
treeCopyToList(t2,mainTreeList);
int mainTreeSize = mainTreeList.size();
for(int i = 0; i < subTreeList.size(); i++){
for(int j = 0; j < mainTreeSize; j++){
if( subTreeList.get(i).equals(mainTreeList.get(j)) ){
subTreeList.remove(i);
}
}
}
System.out.println(subTreeList);
return subTreeList.isEmpty();
}