Java ArrayList

Java 集合框架Java Collections Framework

Класс ArrayList — это массив, который можно динамически изменять. Его отличие от обычных массивов в том, что у него нет фиксированного ограничения размера, и мы можем добавлять или удалять элементы.

ArrayList наследуется от AbstractList и реализует интерфейс List.

Класс ArrayList находится в пакете java.util. Перед использованием его нужно импортировать. Синтаксис имеет следующий вид:

import java.util.ArrayList; // 引入 ArrayList 类

ArrayList<E> objectName =new ArrayList<>();  // 初始化
  • E: обобщённый тип данных, используется для указания типа данных objectName,можно использовать только ссылочные типы данных。
  • objectName: имя объекта.

ArrayList — это очередь на основе массива, которая предоставляет такие связанные функции, как добавление, удаление, изменение и обход.

Добавить элемент

Класс ArrayList предоставляет множество полезных методов. Вы можете использовать метод add() для добавления элементов в ArrayList:

Пример

import java.util.ArrayList;

public class ExampleTest {
    public static void main(String[] args) {
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("Example");
        sites.add("Taobao");
        sites.add("Weibo");
        System.out.println(sites);
    }
}

Приведённый выше пример выполняется, и результат вывода:

[Google, Example, Taobao, Weibo]

Доступ к элементу

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

Пример

import java.util.ArrayList;

public class ExampleTest {
    public static void main(String[] args) {
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("Example");
        sites.add("Taobao");
        sites.add("Weibo");
        System.out.println(sites.get(1));  // Доступ ко второму элементу
    }
}

Примечание: значение индекса массива начинается с 0.

Приведённый выше пример выполняется, и результат вывода:

Example

Изменение элемента

Чтобы изменить элемент в ArrayList, можно использовать метод set(). Первый параметр метода set(int index, E element) — это индекс, указывающий позицию элемента, который нужно заменить; второй параметр — новый элемент, указывающий новое значение, которое нужно установить:

Пример

import java.util.ArrayList;

public class ExampleTest {
    public static void main(String[] args) {
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("Example");
        sites.add("Taobao");
        sites.add("Weibo");
        sites.set(2, "Wiki"); // Первый параметр — позиция индекса, второй — значение для изменения
        System.out.println(sites);
    }
}

Приведённый выше пример выполняется, и результат вывода:

[Google, Example, Wiki, Weibo]

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

Чтобы удалить элемент в ArrayList, можно использовать метод remove():

Пример

import java.util.ArrayList;

public class ExampleTest {
    public static void main(String[] args) {
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("Example");
        sites.add("Taobao");
        sites.add("Weibo");
        sites.remove(3); // Удалить четвёртый элемент
        System.out.println(sites);
    }
}

Приведённый выше пример выполняется, и результат вывода:

[Google, Example, Taobao]

Вычисление размера

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

Пример

import java.util.ArrayList;

public class ExampleTest {
    public static void main(String[] args) {
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("Example");
        sites.add("Taobao");
        sites.add("Weibo");
        System.out.println(sites.size());
    }
}

Приведённый выше пример выполняется, и результат вывода:

4

Итерация по ArrayList

Мы можем использовать for для перебора элементов в списке ArrayList:

Пример

import java.util.ArrayList;

public class ExampleTest {
    public static void main(String[] args) {
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("Example");
        sites.add("Taobao");
        sites.add("Weibo");
        for (int i = 0; i < sites.size(); i++) {
            System.out.println(sites.get(i));
        }
    }
}

Приведённый выше пример выполняется, и результат вывода:

Google
Example
Taobao
Weibo

Вы также можете использовать for-each для перебора элементов:

Пример

import java.util.ArrayList;

public class ExampleTest {
    public static void main(String[] args) {
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("Example");
        sites.add("Taobao");
        sites.add("Weibo");
        for (String i : sites) {
            System.out.println(i);
        }
    }
}

Приведённый выше пример выполняется, и результат вывода:

Google
Example
Taobao
Weibo

Другие ссылочные типы

Элементы в ArrayList на самом деле являются объектами. В приведённых выше примерах все элементы ArrayList имеют тип String.

Если мы хотим хранить другие типы, а <E> может быть только ссылочным типом данных, то нам нужно использовать классы-обёртки базовых типов.

Таблица классов-обёрток, соответствующих базовым типам, выглядит следующим образом:

Базовый типСсылочный тип
логическое значениеBoolean
байтByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charСимвол

Кроме того, BigInteger и BigDecimal используются для высокоточных вычислений. BigInteger поддерживает целые числа произвольной точности. Они также являются ссылочными типами, но не имеют соответствующих базовых типов.

ArrayList<Integer> li=new ArrayList<>();     // 存放整数元素
ArrayList<Character> li=new ArrayList<>();   // 存放字符元素

В следующем примере ArrayList используется для хранения чисел (с использованием типа Integer):

Пример

import java.util.ArrayList;

public class ExampleTest {
    public static void main(String[] args) {
        ArrayList<Integer> myNumbers = new ArrayList<Integer>();
        myNumbers.add(10);
        myNumbers.add(15);
        myNumbers.add(20);
        myNumbers.add(25);
        for (int i : myNumbers) {
            System.out.println(i);
        }
    }
}

Приведённый выше пример выполняется, и результат вывода:

10
15
20
25

Сортировка ArrayList

Класс Collections также является очень полезным классом, расположенным в пакете java.util. Его метод sort() может сортировать списки символов или чисел.

Следующий пример сортирует буквы:

Пример

import java.util.ArrayList;
import java.util.Collections;  // Импорт класса Collections

public class ExampleTest {
    public static void main(String[] args) {
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Taobao");
        sites.add("Wiki");
        sites.add("Example");
        sites.add("Weibo");
        sites.add("Google");
        Collections.sort(sites);  // Сортировка букв
        for (String i : sites) {
            System.out.println(i);
        }
    }
}

Приведённый выше пример выполняется, и результат вывода:

Google
Example
Taobao
Weibo
Wiki

Следующий пример сортирует числа:

Пример

import java.util.ArrayList;
import java.util.Collections;  // Импорт класса Collections

public class ExampleTest {
    public static void main(String[] args) {
        ArrayList<Integer> myNumbers = new ArrayList<Integer>();
        myNumbers.add(33);
        myNumbers.add(15);
        myNumbers.add(20);
        myNumbers.add(34);
        myNumbers.add(8);
        myNumbers.add(12);

        Collections.sort(myNumbers);  // Сортировка чисел

        for (int i : myNumbers) {
            System.out.println(i);
        }
    }
}

Приведённый выше пример выполняется, и результат вывода:

8
12
15
20
33
34

Методы Java ArrayList

Ниже приведён список часто используемых методов Java ArrayList:

Метод Описание
add() Вставляет элемент в arraylist в указанную позицию
addAll() Добавляет все элементы из коллекции в arraylist
clear() Удаляет все элементы из arraylist
clone() Скопировать arraylist
contains() Определить, присутствует ли элемент в arraylist
get() Получить элемент в arraylist по значению индекса
indexOf() Вернуть значение индекса элемента в arraylist
removeAll() Удалить все элементы в arraylist, которые присутствуют в указанной коллекции
remove() Удалить один элемент из arraylist
size() Вернуть количество элементов в arraylist
isEmpty() Определить, пуст ли arraylist
subList() Извлечь часть элементов arraylist
set() Заменить элемент по указанному индексу в arraylist
sort() Отсортировать элементы arraylist
toArray() Преобразовать arraylist в массив
toString() Преобразовать arraylist в строку
ensureCapacity() Установить для arraylist указанную ёмкость
lastIndexOf() Возвращает позицию последнего вхождения указанного элемента в arraylist
retainAll() Оставить в arraylist те элементы, которые также присутствуют в указанной коллекции
containsAll() Проверить, содержит ли arraylist все элементы указанной коллекции
trimToSize() Привести ёмкость arraylist в соответствие с количеством элементов в массиве
removeRange() Удалить элементы между указанными индексами в arraylist
replaceAll() Заменить каждый элемент в массиве заданным содержимым операции
removeIf() Удалить все элементы arraylist, удовлетворяющие определённым условиям
forEach() Перебрать каждый элемент в arraylist и выполнить определённую операцию

Дополнительные методы API можно посмотреть здесь:https://www.example.com/manual/jdk11api/java.base/java/util/ArrayList.html

Java 集合框架Java Collections Framework

Другие расширения