русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Конкретні класи колекцій


Дата додавання: 2014-05-29; переглядів: 1123.


java.util.ArrayList - цей клас розширює AbstractList і досить схожий на клас Vector. Він також динамічно розширюється, як Vector, однак його методи не є синхронізованими, внаслідок чого операції з ним виконуються швидше.

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

Класи LinkedList і ArrayList мають схожу функціональність. Однак з погляду продуктивності вони відрізняються. Так, в ArrayList помітно швидше (приблизно на порядок) здійснюються операції проходу за всім списком (ітерації) і одержання даних. LinkedList майже на порядок швидше виконує операції видалення й додавання нових елементів.

java.util.Hashtable - розширює абстрактний клас Dictionary. Він призначений для зберігання об'єктів у вигляді пар ключ/значення. Із самої назви випливає, що Hаshtable використовує алгоритм хешування для збільшення швидкості доступу до даних.

java.util.HashMap - цей клас розширює AbstractMap і досить схожий на клас Hashtable. HashMap призначений для зберігання пар об'єктів ключ/значення. Як для ключів, так і для елементів допускаються значення типу null. Порядок зберігання елементів у цій колекції не збігається з порядком їхнього додавання. Порядок елементів у колекції також може мінятися в часі. HashMap забезпечує постійний час доступу для операцій get і put.

Ітерація по всіх елементах колекції пропорційна її ємності. Тому має сенс не робити розмір колекцій надмірно великим, якщо досить часто прийдеться здійснювати ітерацію по елементах.

Методи HashMap не є синхронізованими. Для того, щоб забезпечити нормальну роботу в багатопоточному варіанті, варто використовувати або зовнішню синхронізацію потоків, або синхронізований варіант колекції.

java.util.TreeMap - розширює клас AbstractMap і реалізує інтерфейс SortedMap. TreeMap містить ключі в порядку зростання. Використовується або натуральне порівняння ключів, або повинен бути реалізований інтерфейс Comparable. Реалізація алгоритму пошуку забезпечує логарифмічну залежність часу виконання основних операцій (containsKey, get, put і remove). Заборонено застосування null значень для ключів. При використанні дублікатів ключів посилання на об'єкт, збережений з таким же ключем, буде втрачена.

Клас Collections

Клас Collections є класом-утилітою й містить кілька допоміжних методів для роботи із класами, що забезпечують різні інтерфейси колекцій. Наприклад, для сортування елементів списків, для пошуку елементів в упорядкованих колекціях і т.д. Але, мабуть, найбільш важливою властивістю цього класу є можливість одержання синхронізованих варіантів класів-колекцій.


 


<== попередня лекція | наступна лекція ==>
Інтерфейс Collection | Тема 8 Об'єктна модель Java


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн