Android проверяет, есть ли в Arraylist другой Arraylist?

Я не уверен, что я делаю неправильно, я попробовал почти все решения от SO, и они не работают правильно. У меня есть несколько ArrayList<Integer> которые я пытаюсь сравнить с другим ArrayList<Integer> , но код постоянно говорит мне, что совпадения нет, даже когда я создаю тот, который совпадает напрямую.

private ArrayList<Integer> list_of_twos = new ArrayList<Integer>(Arrays.asList(2,2,2));
public int getValue(Arraylist<Integer> currentList){
   if (currentList.contains(list_of_twos)) 
   {
       return 6;
   }
}

Я создаю currentList в моем oncreate на данный момент для тестирования, как это

private ArrayList<Integer> testCurrentList = new ArrayList<>();
testCurrentList.add(2);
testCurrentList.add(2);
testCurrentList.add(2);

int value = getValue(testCurrentList);

Я пробовал containsall но потом это также дает мне ложные срабатывания.

Всего 1 ответ


Метод ArrayList.contains(Object) возвращает true, если объект параметра найден между элементами ArrayList. Поскольку у вас есть ArrayList из Integer но вы передаете в качестве аргумента ArrayList<Integer> функция всегда возвращает false, поскольку она сравнивает целые числа с полным массивом.

Для решения проблемы вы можете использовать .equals() : if (currentList.equals(list_of_twos))

Или вы можете реализовать свою собственную функцию сравнения, используя цикл (или поток), чтобы перебрать элементы одного массива и сравнить их с другим.


Есть идеи?

10000