Top.Mail.Ru

Перечень уроков по Java

31. Класс ArrayList и интерфейс List

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

ArrayList имеет следующие конструкторы:

  • ArrayList(): создает пустой список
  • ArrayList(Collection <? extends E> col): создает список, в который добавляются все элементы коллекции col.
  • ArrayList (int capacity): создает список, который имеет начальную емкость capacity

А также следующие методы:

  • public int size() — возвращает количество элементов списка
  • public boolean isEmpty() — возвращает true, если список пуст, иначе возвращает false
  • public boolean contains(Object item ) — возвращает true, если объект item содержится в списке, иначе возвращает false
  • public int indexOf(Object item) — ищет первое вхождение заданного объекта в список и возвращает его индекс.  Возвращает -1, если объект не принадлежит списку.
  • public int lastIndexOf(Object item) — то же самое, но ищет последнее вхождение.
  • public Object clone() — создает копию списка.
  • public Object[] toArray() — преобразует список в массив.
  • public Object get(int index) — возвращает элемент списка с заданным номером.
  • public Object set(int index,  Object item) — заменяет элемент с заданным номером.
  • public boolean add(Object o) — добавляет заданный объект в конец списка.
  • public void add(int index, Object item) — вставляет элемент в указанную позицию списка.
  • public Object remove(int index) — удаляет заданный элемент списка.
  • public void clear() — очищает список.
  • public boolean addAll(Collection c) — добавляет к списку (в конец) все элементы заданной коллекции.
  • public boolean addAll(int index, Collection c) — вставляет в список с указанной позиции все элементы коллекции.
  • protected void removeRange(int fromIndex, int toIndex) — удаляет из коллекции объекты в заданном интервале индексов (исключая toIndex).

 

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

Пустой список строк
ArrayList <String> list = new ArrayList <String>();

 

Список с заданной начальной емкостью
ArrayList<Integer> list = new ArrayList<Integer>(7);

 

Инициализация списка на этапе определения
ArrayList <String> list = Arrays.asList(new String[] {"элемент1", " элемент2", " элемент3"});

 

Пример.

Создадим экземпляр класса ArrayList и рассмотрим использование методов.

public static void main(String[] args) {

// Создание ArrayList - списка массива

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

    // Добаление элемениов в список массива

    list.add("Слива");

    list.add("Персик");

    list.add("Орех грецкий");

    list.add("Инжир");

    list.add("Груша");

    list.add("Вишня");

    list.add("Боярышник");

    list.add("Айва");

    list.add("Абрикос");

    list.add(0, "Яблоня"); //Добавление элемента в 0 позицию списка массива

    // Вывод содержимого списка массива

    System.out.println("ArrayList содержит следующие элементы: " + list);

    // 1 способ: вывод содержимого списка через  foreach цикл

    System.out.println("Извлечение элементов списка с использованием foreach цикла");

    for(String str : list){

         System.out.println("Элемент : " + str);

     }

    // 2 способ: вывод содержимого списка через index и размер списка

    System.out.println("Извлечение элементов списка с использованием index и размера списка");

    for (int i = 0; i < list.size(); i++) {

        System.out.println("Index: " + i + " - элемент: " + list.get(i));

    }

    // 3 способ: использование итератора

    // hasNext(): возвращает  true, если есть следующий элемент

    // next(): следующий элемент

    System.out.println("Извлечение элементов используя итератор");

    for (Iterator<String> it = list.iterator(); it.hasNext();) {

        System.out.println("Элемент: " + it.next());

    }

    // Получение  размера списка массива

    int size = list.size();

    System.out.println("Размер списка: " + size);

    // Получение элемента списка массива в позиции 0

    System.out.println("Первый элемент: " + list.get(0));

    // Замена элемента списка массива в позиции 1

    list.set(1, "Слива медовая");

    // Проверка, содержит ли список элемент "Яблоня"

    boolean flag = list.contains("Яблоня");

    System.out.println("Список содержит элемент  Яблоня: " + flag);

    // Удаление элемента

    // удаление первого вхождения значения "Яблоня"

    list.remove("Яблоня");

    // удаление элемента с индексом 1

    list.remove(1);

    // Перевод ArrayList в массив

    // без использования типов

    Object[] tree = list.toArray();

    for(int i=0; i<tree.length; i++)

          System.out.println(tree[i]);

     String[] strArray = list.toArray(new String[list.size()]);

     System.out.println("Массив после преобразования : "

                    + Arrays.toString(strArray));

}

Будет выведено:

ArrayList содержит следующие элементы: [Яблоня, Слива, Персик, Орех грецкий, Инжир, Груша, Вишня, Боярышник, Айва, Абрикос]
Извлечение элементов списка с использованием foreach цикла
Элемент : Яблоня
Элемент : Слива
Элемент : Персик
Элемент : Орех грецкий
Элемент : Инжир
Элемент : Груша
Элемент : Вишня
Элемент : Боярышник
Элемент : Айва
Элемент : Абрикос
Извлечение элементов списка с использованием index и размера списка
Index: 0 - элемент: Яблоня
Index: 1 - элемент: Слива
Index: 2 - элемент: Персик
Index: 3 - элемент: Орех грецкий
Index: 4 - элемент: Инжир
Index: 5 - элемент: Груша
Index: 6 - элемент: Вишня
Index: 7 - элемент: Боярышник
Index: 8 - элемент: Айва
Index: 9 - элемент: Абрикос
Извлечение элементов используя итератор
Элемент: Яблоня
Элемент: Слива
Элемент: Персик
Элемент: Орех грецкий
Элемент: Инжир
Элемент: Груша
Элемент: Вишня
Элемент: Боярышник
Элемент: Айва
Элемент: Абрикос
Размер списка: 10
Первый элемент: Яблоня
Список содержит элемент Яблоня: true
Слива медовая
Орех грецкий
Инжир
Груша
Вишня
Боярышник
Айва
Абрикос
Массив после преобразования : [Слива медовая, Орех грецкий, Инжир, Груша, Вишня, Боярышник, Айва, Абрикос]