Колекції (collections) в java

У цій статті мова піде про, мабуть, найбільш часто використовуваних колекціях List, а саме про таких класах як AbstractList, ArrayList, LinkedList.

List - впорядкована колекція іноді звана списком або послідовністю. Список може містити елементи, що повторюються. Розробник має абсолютний контроль над тим, в якому місці списку буде вставлений кожен елемент. Також користувач може отримати доступ до елементів списку за індексом. На додаток до стандартних операцій інтерфейсу Collection, List містить наступні:

Доступ по позиції - маніпулює елементами на основі їх індексного позиції в списку.

Незважаючи на те, що в інтерфейсі List присутні методи для доступу до елементу по позиції (індексу), робити це не рекомендує. У деяких реалізаціях списку (наприклад, LinkedList), ці операції можуть виконуватися за час, пропорційне значенню індексу.

Пошук - знаходить вказаний елемент і повертає його позицію в списку. Для цього служить два методи: indexOf () і lastIndexOf ().

Спеціальний итератор ListIterator - містить вдосконалений итератор ListIterator для обробки послідовних властивостей списку.

Як видно з вищенаведеного коду, в ListIterator з'явилися методи для управління ітератором в зворотному порядку: hasPrevious (), previous (), previousIndex ().

Діапазон елементів (sublist) - дозволяє маніпулювати довільним діапазоном в списку. Це виконується за допомогою методу subList (). Наприклад так:

Метод subList () приймає два значення: стартовий індекс і кінцевий індекс подсписка. Зверніть увагу, що діапазон елементів (список) не створюється дублюванням елементів з батьківського списку. Цей список є частиною батьківського списку через що всі маніпуляції над ним відображаються на батьківському списку. Вищенаведений приклад це добре демонструє.

Також зверніть увагу, що елемент з кінцевим індексом не включається до списку.

На Рис.1 приведена ієрархія класів List.

Колекції (collections) в java

Рис 1. Ієрархія List у фреймворку Collections

Інтерфейсу List також належить два застарілих класу: Vector і Stack, про які згадувалося в попередній статті.

На відміну від Set, List може містити елементи, що повторюються. Також може містити null-елементи.

Деякі реалізації списків мають обмеження на елементи, які вони можуть містити. Наприклад, в деяких реалізаціях заборонено використовувати null як елемент для вставки (на ArrayList і LinkedList це правило не поширюється).

Два об'єкти типу List однакові (тобто метод equals () повертає true) тільки в тому випадку, коли вони містять однакові елементи в одному і тому ж порядку.

ArrayList - найбільш широко використовувана реалізація List. ArrayList володіє найбільшою продуктивністю в плані доступу до випадкового елементу в масиві.

LinkedList - ще одна реалізація інтерфейсу List. На відміну від ArrayList, LinkedList володіє більшою швидкістю вставки елемента в довільне місце в списку, однак доступ до елементу прямо пропорційний його позиції щодо початку послідовності.

Схожі статті