Java 正在尝试检查arraylist是否是另一个列表的子集

Java 正在尝试检查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

我试图实现一个简单的检查,看看arraylist是否是另一个列表的子集

在我的两个列表中有以下元素,list1[A F K]和list2[B A C F K]。list1的所有元素都在list2中,因此它应该返回true


我尝试使用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();
}