Неожидаемый результат поиска значения Integer в ArrayList
В общем, знакомлюсь с технологией. Изучаю книгу Берта Бейтса и Кати Сьерры по Java.
При реализации игры (по принципу морского боя) с использованием класса ArrayList из стандартной библиотеки Java(API) возникает проблема поиска элемента, который я хочу найти со значением типа int.
Не вдаваясь в подробности кода игры, реализовал более просто пример для демонстрации и в целях изучения механизма:
Исходные данные: небольшой массив значений int[];
Задача: Организовать поиск значения в массиве, если значение существует, удалить из него. Чтобы не использовать перебор циклом, решаю преобразовать в объект ArrayList и обработать существующее целочисленное значение с использованием методов класса "contains", "indexOf", "remove".
Проблема: метод Arrays.asList() создает список, в каждом их значений которого содержится массив. Чтобы получить доступ к элементам я должен использовать метод Get(0), т.е. указать явно на нулевую строчку коллекции и только потом со значением int[] внутри что-то делать. Хотя я ожидаю, что в результате работы вызова метода asList() у меня будет доступен ArrayList без "уровней вложения".
Собственно, вопрос, что я в методе понял не так и где споткнулся...
import java.util.ArrayList;
import java.util.Arrays;
import static java.lang.System.out;
public class SearchControl {
private int[] arrObject;
private ArrayList<Integer> arrListObject;
public static void main(String[] args) {
SearchControl scObject = new SearchControl();
scObject.setMethod();
}
void setMethod() {
arrObject = new int[] {1,2,3,4,5};
arrListObject = new ArrayList<Integer>();
//block #1: normal method behavior
out.println("Regular behavior:");
for (int arrValue : arrObject) {
arrListObject.add(arrValue);
}
out.println("- 'arrListObject' contains element '1': " + arrListObject.contains(3));
//block #2: abnormal method behavior
out.println("\nNon-expected behavior:");
arrListObject = new ArrayList(Arrays.asList(arrObject));
out.println("- 'arrListObject' contains element 'arrObject': " + arrListObject.contains(arrObject));
out.println("- 'arrListObject' contains element '1': " + arrListObject.contains(3));
}
}