如何在java中比较两个ArrayList

如何在java中比较两个ArrayList,java,Java,我正在做一个乐透节目 如何知道一个ArrayList是否包含来自另一个ArrayList的所有数字 我尝试的方式 ArrayList<String> newNumbers = new ArrayList<>();//Define Lotto Scope ArrayList<String> resultNumbers = new ArrayList<>(); //Only 6 numbers ArrayList<String> incl

我正在做一个乐透节目

如何知道一个ArrayList是否包含来自另一个ArrayList的所有数字

我尝试的方式

ArrayList<String> newNumbers = new ArrayList<>();//Define Lotto Scope
ArrayList<String> resultNumbers = new ArrayList<>(); //Only 6 numbers 
ArrayList<String> includingNumbers= new ArrayList<>(); //Number to Include

 public void applyStaticNumbers(){

   for (int i = 1; i < 46; i++) {
        newNumbers.add("" + i);
    }

   Collections.shuffle(newNumbers);

    for (int i = 0; i < 6; i++) {
        resultNumbers.add(newNumbers.get(i));
    }

   resultNumbers.sort(Comparator.comparing(Double::parseDouble)); //sort Numbers

   if (resultNumbers.contains(includingNumbers.get(0))) {
        for (int i = 0; i < 6; i++) {
            textViews.get(i).setText(resultNumbers.get(i));
        }
    } else {//If not included, restart.
        newNumbers.clear();
        resultNumbers.clear();
        applyStaticNumbers();
    }


}
您可以使用containsAll方法

您可以使用containsAll方法


您可以使用removeall方法

Collection listOne=新的arraylistarays.asListx,y,z,a,b,c,d; Collection listTwo=新的阵列列表。asLista、b、d、e、f、x、y

    List<String> sourceList = new ArrayList<String>(listOne);
    List<String> destinationList = new ArrayList<String>(listTwo);


    sourceList.removeAll( listTwo );
    destinationList.removeAll( listOne );

您可以使用removeall方法

Collection listOne=新的arraylistarays.asListx,y,z,a,b,c,d; Collection listTwo=新的阵列列表。asLista、b、d、e、f、x、y

    List<String> sourceList = new ArrayList<String>(listOne);
    List<String> destinationList = new ArrayList<String>(listTwo);


    sourceList.removeAll( listTwo );
    destinationList.removeAll( listOne );

您的列表是字符串类型的具体原因是什么?如果它们是Integer类型,则会大大简化您的解决方案,这就是int原语在集合中的存储方式;看见另外,需要注意的是整数是一个对象,因此不应该与==运算符进行比较,这是有原因的,但您不会使用它。。。非常感谢。当我添加几个数字时,我有内存问题,我正在解决它…啊,这是由于在else块中调用applyStaticNumbers造成的。现在发生的事情是,该方法再次被递归调用,这是值得一读的。为了解决这个问题,我会让applyStaticNumbers在默认情况下返回布尔值true,但在else语句中返回false,并让另一个方法确定是否应该再次运行applyStaticNumbers。这非常有用。我真的很感激你。你的列表是字符串类型的有什么具体原因吗?如果它们是Integer类型,则会大大简化您的解决方案,这就是int原语在集合中的存储方式;看见另外,需要注意的是整数是一个对象,因此不应该与==运算符进行比较,这是有原因的,但您不会使用它。。。非常感谢。当我添加几个数字时,我有内存问题,我正在解决它…啊,这是由于在else块中调用applyStaticNumbers造成的。现在发生的事情是,该方法再次被递归调用,这是值得一读的。为了解决这个问题,我会让applyStaticNumbers在默认情况下返回布尔值true,但在else语句中返回false,并让另一个方法确定是否应该再次运行applyStaticNumbers。这非常有用。我真的很感激你。