Java List

Java List

Java List — це впорядкована колекція. List — це інтерфейс, який розширює інтерфейс колекції. Дана структура даних забезпечує контроль над позицією, куди можна вставити елемент. Ви можете отримати доступ до елементів за їхнім індексом, а також шукати елементи в списку.

Деякі з важливих моментів про Java List:

  • Інтерфейс Java List є членом Java Collections Framework.
  • Список дозволяє додавати повторювані елементи.
  • Список дозволяє додавати null елемент.
  • Індекси списку починаються з 0, як і масиви.
  • List підтримує узагальнення типів, і ми повинні використовувати його, коли це можливо. Використання Generics зі списком дозволить уникнути ClassCastException під час виконання програми.

Тепер давайте подивимось які в Java є реалізації інтерфейсу List.

Колекція ArrayList

ArrayList – колекція на основі масиву. Має властивість змінювати свій розмір залежно від того, чи видаляються або додаються елементи. Робиться це все без втручання програміста.

колекція ArrayList

Найкраще вчити List Java на прикладах. Памʼятайте, що колекції можуть зберігати тільки обʼєкти. Тому якщо потрібно працювати з числовими даними, можна скористатись класами обгортками.

package ua.com.antitutor.main;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

public class ListExample {

    public static void main(String[] args) {
        List<String> arrayList = new ArrayList<>();//оголошення і створення колекції
        // типу ArrayList яка буде зберігати рядки
        arrayList.add("Serhiy");//додавання елементів
        arrayList.add("Oksana");
        arrayList.add("Taras");
        arrayList.add("Olena");

        System.out.println("ArrayList before sorting");
        System.out.println(arrayList);

        arrayList.sort(Comparator.naturalOrder());//сортування
        System.out.println("ArrayList after sorting");
        System.out.println(arrayList);

        String firstElement = arrayList.get(0);//отримання елементу за індексом
        System.out.println(firstElement);

        int sizeOfList = arrayList.size();//кількість елементів колекції
        System.out.println("Size before remove element: " + sizeOfList);

        arrayList.remove(0);//видалення за індексом
        System.out.println("Size after remove element: " + arrayList.size());

        arrayList.remove("Taras");//видалення за елементом
        System.out.println(arrayList);

        boolean containsOlenaElement = arrayList.contains("Olena");//перевірка чи містить колекція елемент
        System.out.println("Contains Olena? " + containsOlenaElement);

        int indexOfNotFoundElement = arrayList.indexOf("Oksana");//індекс елементу
        System.out.println("Index of Oksana element is negative because no element found: " + indexOfNotFoundElement);

        int indexOfFoundElement = arrayList.indexOf("Serhiy");
        System.out.println("Index of found element: " + indexOfFoundElement);

        boolean isListEmpty = arrayList.isEmpty();//перевірка чи колекція пуста
        System.out.println("Is empty? " + isListEmpty);

        arrayList.clear();//очистка колекції
        System.out.println("Size after clear: " + arrayList.size());
    }
}

В результаті виконання отримаємо наступний результат:

результат виконання прикладу з колекцією ArrayList

Колекція LinkedList

LinkedList – колекція на основі зв’язаного списку. Елементи, поміщені в цю колекцію зберігають свій порядок вставки. Тобто в якому порядку було вставлено елемент, у такому порядку він буде при виведенні.

Кожен елемент, який зберігається в LinkedList, містить посилання на «сусідів». Це спрощує додавання та видалення елементів у списку. Класи ArrayList і Vector краще використовувати для пошуку елементів, тому що ці класи використовують індекси для доступу до елементів. Однак вставка та видалення елементів для них буде повільніше, ніж LinkedList.

колекція LinkedList

Всі методи, які ми використовували для ArrayList, будуть працювати і для LinkedList. Адже в них спільний інтерфейс. Це саме буде справедливо для всіх інших колекцій які походять від одного інтерфейсу.

package ua.com.antitutor.main;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;

public class ListExample {

    public static void main(String[] args) {
        List<Integer> linkedList = new LinkedList<>();//оголошення і створення колекції
        // типу LinkedList яка буде зберігати Integer
        linkedList.add(4);//додавання елементів
        linkedList.add(-3);
        linkedList.add(2);
        linkedList.add(12);

        System.out.println("LinkedList before sorting");
        System.out.println(linkedList);

        linkedList.sort(Comparator.naturalOrder());//сортування
        System.out.println("LinkedList after sorting");
        System.out.println(linkedList);

        Integer firstElement = linkedList.get(0);//отримання елементу за індексом
        System.out.println(firstElement);

        int sizeOfList = linkedList.size();//кількість елементів колекції
        System.out.println("Size before remove element: " + sizeOfList);

        linkedList.remove(0);//видалення за індексом
        System.out.println("Size after remove element: " + linkedList.size());

        linkedList.remove(2);//видалення за елементом
        System.out.println(linkedList);

        boolean containsOlenaElement = linkedList.contains(4);//перевірка чи містить колекція елемент
        System.out.println("Contains Olena? " + containsOlenaElement);

        int indexOfNotFoundElement = linkedList.indexOf(5);//індекс елементу
        System.out.println("Index of Oksana element is negative because no element found: " + indexOfNotFoundElement);

        int indexOfFoundElement = linkedList.indexOf(12);
        System.out.println("Index of found element: " + indexOfFoundElement);

        boolean isListEmpty = linkedList.isEmpty();//перевірка чи колекція пуста
        System.out.println("Is empty? " + isListEmpty);

        linkedList.clear();//очистка колекції
        System.out.println("Size after clear: " + linkedList.size());
    }
}
результат роботи LinkedList

Колекція Vector

Vector – той же ArrayList з тією різницею, що методи цієї колекції синхронізовані. Тобто безпечні для використання в багатопотоковому середовищі. Однак працюють повільніше саме через те що потокобезпечні. На даний час Vector вважається застарілим. Тобто таким який не рекомендується до використання. Для багатопотокового середовища радять використовувати Collections.synchronizedList.

Наразі ми розглянули всі основні класи інтерфейсу List. Тепер можна використовувати дану структуру даних для зберігання і маніпуляції елементами і слідкувати за розмірністю як це було з масивами.

Втомився вчити Java сам?

Переглянь нашу сторінку з курсами! Можливо щось сподобається 😉

Останні записи


Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *


Категорії