Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпори JAVA.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
178.34 Кб
Скачать

71.Інтерфейс List.

Класи які реалізують цей інтерфейс містять упорядковану послідовність об'єктів ( Об'єкти зберігаються в тому порядку в якому вони були додані ) . D JDK 1.2 був перероблений клас Vector , так , що він тепер реалізує інтерфейс List. інтерфейс List розширює інтерфейс Collection т.ч. будь-який класс що імплементує List реалізує всі методи визначені в Collection , в той же час вводяться нові методи які дозволяють додавати і видаляти елементи зі списку . List забезпечує так само ListIterator який дозволяє переміщатися як вперед , так і назад , за елементами списку.

AbstractList будучи абстрактним класом представляє собою основу для реалізації різних варіантів інтерфейсу List

Слід пам'ятати , що в пакеті java.awt так само визначено клас List використовуваний для

подання списку варіантів . Т.ч. що б уникнути плутанини , слід використовувати

повністю кваліфіковане ім'я java.util.List

72.Інтерфейс Map.

Класи які реалізують цей інтерфейс зберігають невпорядкований набір об'єктів парами ключ / значення . Кожен ключ має бути унікальним. Hashtable після модифікації в JDK 1.2 реалізує інтерфейс Map . Порядок проходження пар ключ / значення не визначений.

Інтерфейс Map НЕ розширює інтерфейс Collection. AbstractMap будучи абстрактним

класом представляє собою основу для реалізації різних варіантів інтерфейсу Map

Слід звернути увагу , що List і Set розширюють інтерфейс Collection , а Map ні.

73.Інтерфейс SortedSet.

Цей інтерфейс розширює Set вимагаючи , що б вміст набору був упорядкованим . Тільки об'єкт що імплементує SortedSet може містити об'єкти які реалізують інтерфейс Comparator або може порівнюватися з використанням зовнішнього об'єкта що реалізовує інтерфейс comparator .

74.Інтерфейс SortedMap.

Цей інтерфейс розширює Map вимагаючи , щоб вміст колекції було упорядковано

за значеннями ключів.

75.Інтерфейс Iterator.

У Java 1 для перебору елементів колекції використовувався інтерфейс Enumeration . У Java 2 для цих цілей повинні використовуватися об'єкти які реалізують інтерфейс Iterator . Всі класи які реалізують інтерфейс Collection повинні реалізувати метод , iterator , який повертає об'єкт що реалізує інтерфейс Iterator . Iterator вельми схожий на Enumeration , з тією лише відмінністю , що в ньому визначено метод remove , який дозволяє видалити об'єкт з колекції , для якої Iterator був створений .

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

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

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

елемнтів .

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

Є кілька міркувань , що відносяться до продуктивності класів , що використовують для зберігання даних алгоритм хешування . Розмір масиву. Якщо масив буде занадто малий, то пов'язані списки будуть занадто довгими , і швидкість пошуку буде істотно знижуватися , тому що перегляд елементів списку буде такою ж як у звичайному масиві Що б уникнути цього задається якийсь коефіцієнт заповнення. При заповненні елементів масиву в якому зберігаються ключі (або списки ключів ) на цю величину , відбувається збільшення масиву і здійснюється повторне реіндекcування . Таким чином якщо масив буде занадто малий , то він буде швидко заповняться і буде проводиться операція повторного індексування , яка забирає досить багато ресурсів. З іншого боку , якщо масив зробити великим , то при необхідності переглянути послідовно всі елементи колекції що використовує алгоритм хешування буде необхідно обробити велику кількість порожніх елементів масиву ключів.

Початковий розмір масиву і коефіцієнт завантаження колекції задаються при

конструюванні . Наприклад Hashtable ht = new Hashtable ( 1000,0.60 ) ;

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

java.util.HashMap , - цей клас розширює AbstractMap і вельми схожий на клас Hashtable . HashMap призначений для зберігання пар об'єктів ключ / значення . Як для ключів , так для елементів допускаються значення типу null . Порядок зберігання елементів у цій колекції не збігається з порядком їх додавання. Порядок елементів у колекції так ж може змінюватися в часі. HashMap забезпечує постійний час доступу для операцій get і put . Ітерація по всіх елементах колекції пропорційна її ємності. Тому має сенс не встановлювати розмір колекцій надмірно великим , якщо достатньо часто доведеться здійснювати ітерацію за елементами . Методи HashMap не є синхронізованими . Для того , що б забезпечити нормальну роботу в багато потоковому варіанті слід використовувати або зовнішню синхронізацію потоків , або використовувати синхронізований варіант колекції Слід ще звернути увагу на різницю між HashMap і Hashtable . Hashtable існує в Java ще з перших релізів. HashMap з'явився в JDK 1.2 . Головна відмінність в тому , що Hashtable не дозволяє зберігати порожні значення , в HashMap це робити можна . Крім того , методи в Hashtable є синхронізованими , а в HasMap немає. Крім цього, слід пам'ятати , що починаючи з JDK 1.2 Hashtable реалізує інтерфейс Map , що може викликати деякі проблеми при спробі запуска додатків що використовують

більш ранні версії JDK .

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]