Списочный массив ArrayList

В Java массивы имеют фиксированную длину и не могут быть увеличены или уменьшены. Класс ArrayList реализует интерфейс List и может менять свой размер во время исполнения программы, при этом не обязательно указывать размерность при создании объекта. Элементы ArrayList могут быть абсолютно любых типов в том числе и null.

Пример создания объекта ArrayList

ArrayList <String> list = new ArrayList <String>();

Можно инициализировать массив на этапе определения. Созданный объект list содержит свойство size. Обращение к элементам массива осуществляется с помощью метода get(). Пример :

ArrayList <String> list = Arrays.asList(new String[] {"a", "b", "c"});
System.out.println ("Размер массива равен '" + Integer.valueOf (list.size()) + "' элементам");

Добавление элемента в массив ArrayList, метод add

Работать с ArrayList просто: необходимо создать объект и вставлять созданные объекты методом add(). Обращение к элементам массива осуществляется с помощью метода get(). Пример:

ArrayList <String> list = new ArrayList <String();
list.add("Школа");
System.out.println ("Первый элемент массива '" + list.get(0) + "'");
System.out.println ("Размер массива '" + Integer.valueOf (list.size()) + "'");

Замена элемента массива ArrayList, метод set

Чтобы заменить элемент в массиве, нужно использовать метод set() с указанием индекса и новым значением.

list.add("Яблоко");
list.add("Груша");
list.add("Слива");

list.set(1, "Персик");

System.out.println ("2-ой элемент массива '" + list.get(1) + "'");

Удаление элемента массива ArrayList, метод remove

Для удаления элемента из массива используется метод remove(). Можно удалять по индексу или по объекту:

list.remove(0);       // удаляем по индексу
list.remove("Слива"); // удаляем по объекту

ПРИМЕЧАНИЕ: элементы, следующие после удалённого элемента, перемещаются на одну позицию ближе к началу. То же самое относится и к операции вставки элемента в середину списка.

Для очистки всего массива используется метод clear():

list.clear();

Определение позиции элемента ArrayList, метод indexOf

В списочном массиве ArrayList существует метод indexOf(), который ищет нужный элемент и возвращает его индекс.

int index = list.indexOf("Слива");  

// выводим имя элемента и его номер в массиве
System.out.println (list.get(index) + " числится под номером " + index);

Отсчёт в массиве начинается с 0, если индекс равен 2, значит он является третим в массиве.

Проверка наличие элемента в ArrayList, метод contains

Чтобы узнать, есть в массиве какой-либо элемент, можно воспользоваться методом contains(), который вернёт логическое значение true или false в зависимости от присутствия элемента в наборе :

System.out.println (list.contains("Картошка") + "");

Понятно, что в массиве никаких овощей быть не может, поэтому в консоле будет отображено false.

Создание массива из элементов ArrayList, метод toArray

Для конвертирования набора элементов в обычный массив необходимо использовать метод toArray().

ArrayList<String> myArrayList = new ArrayList<String>();
myArrayList.add("Россия");
myArrayList.add("Польша");
myArrayList.add("Греция");
myArrayList.add("Чехия");

String[] myArray = {}; // конвертируем ArrayList в массив
myArray = myArrayList.toArray(new String[myArrayList.size()]);

Интерфейс List

java.util.List является интерфейсом и его следует использовать вместо ArrayList следующим образом :

List<String> list = new ArrayList<String>();

Или укороченный вариант для Java 7:

List<String> list = new ArrayList<>();

В примере тип ArrayList заменен на List, но в объявлении оставлен new ArrayList(). Всё остальное остаётся без изменений. Это является рекомендуемым способом.

Интерфейс List реализует более общий интерфейс коллекции Collection.

Преобразование массива в список, Arrays

Для создания массива можно не только добавлять по одному объекту через метод add(), но и сразу массив с использованием Arrays.asList(...).

Пример создания и инициализации массива из объектов Integer.

List<Integer> numlist = Arrays.asList(1, 2, 5, 9, 11);

System.out.println (numlist.get(2) + ""); // выводит число 5

У данного способа есть недостаток. Если вы определили списочный массив таким образом, то уже не можете вставлять или удалять элемент, хотя при этом можете изменять существующий элемент.

List<Integer> numlist = Arrays.asList(1, 2, 5, 9, 11);
numlist.set(2, 33); // так можно
numlist.add(34);    // нельзя, ошибка во время исполнения

System.out.println (numlist.get(2) + "");
Наверх
  Рейтинг@Mail.ru