Java Урок 57: КОЛЛЕКЦИИ, ArrayList<>

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

Скачать исходники для статьи можно ниже

Пример использования класса ArrayList в программе:

import java.util.ArrayList;
 
public class CollectionApp { 
   public static void main(String[] args) {
      ArrayList<String> states = new ArrayList<String>();
      // добавим в список ряд элементов

      states.add("Германия");
      states.add("Франция");
      states.add("Великобритания");
      states.add("Испания");
      states.add(1, "Италия"); // добавляем элемент по индексу 1

      System.out.println(states.get(1));// получаем 2-й объект
      states.set(1, "Дания"); // установка значения для 2-го объекта

      System.out.println("В списке " + states.size() + " элементов");
      for(String state : states){
         System.out.println(state);
      }
      if(states.contains("Германия")){
         System.out.println("Список содержит государство Германия");
      }

      // удалим несколько объектов
      states.remove("Германия");
      states.remove(0);

      Object[] countries = states.toArray();
      for(Object country : countries){

      System.out.println(country);
      }
   }
}

Вывод программы:
Италия
В списке 5 элементов
Германия
Дания
Франция
Великобритания
Испания
Список содержит государство Германия
Франция
Великобритания
Испания

Здесь объект ArrayList типизируется классом String, поэтому список будет хранить только строки. Поскольку класс ArrayList применяет интерфейс Collection, то мы можем использовать методы данного интерфейса для управления объектами в списке.

Для добавления вызывается метод add. С его помощью мы можем добавлять объект в конец списка:

states.add("Германия") 

Также мы можем добавить объект на определенное место в списке, например, добавим объект на второе место (то есть по индексу 1, так как нумерация начинается с нуля):

states.add(1, "Италия")

Метод size() позволяет узнать количество объектов в коллекции. Проверку на наличие элемента в коллекции производится с помощью метода contains.
А удаление с помощью метода remove.

И так же, как и с добавлением, мы можем удалить либо конкретный
элемент:

states.remove("Германия");

либо элемент по индексу

states.remove(0); 

удаление первого элемента.

Получить определенный элемент по индексу мы можем с помощью метода get():

String state = states.get(1);

а установить элемент по индексу с помощью метода set:

states.set(1, "Дания");

С помощью метода toArray() мы можем преобразовать список в массив объектов. И поскольку класс ArrayList реализует интерфейс Iterable, то мы можем пробежаться по списку в цикле аля for-each:

for(String state : states)

Хотя мы можем свободно добавлять в объект ArrayList дополнительные объекты, в отличие от массива, однако в реальности ArrayList использует для хранения объектов опять же массив.
По умолчанию данный массив предназначен для 10 объектов.

Если в процессе программы добавляется гораздо больше, то создается новый массив, который может вместить в себя все количество.

Подобные перераспределения памяти уменьшают производительность. Поэтому, если мы точно знаем, что у нас список не будет
содержать больше определенного количества элементов, например, 25, то мы можем сразу же явным образом установить это количество, либо в конструкторе:

ArrayList<String> states = new ArrayList<String>(25) 

либо с помощью метода

ensureCapacity: states.ensureCapacity(25)

Введите свой email адрес для того, чтобы подписаться на мой блог:


knopkisoc

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *