CodeGym /Курсове /All lectures for BG purposes /Рамка за колекции на Java

Рамка за колекции на Java

All lectures for BG purposes
Ниво, Урок
На разположение

Въведение

Почти всяка програма трябва да съхранява няHowъв набор от данни. Може да са низове и числа, обекти и т.н. Масивите са превъзходно решение за съхранение. Но масивите имат определени ограничения. Например размерът им е фиксиран, елементите не могат да се премахват и не можете да вмъквате елементи в средата. Колекциите са създадени, за да се заобиколят тези и други ограничения. Всички типове колекции (и има много от тях, Howто ще видим по-късно в този урок) имат способността да се преоразмеряват динамично. Някои типове колекции могат да съхраняват подредени елементи и автоматично да подреждат нови елементи, когато се добавят.

В този урок ще се запознаем с йерархията на класовете на базовите колекции в Java Collections Framework . Има и различни алтернативни библиотеки, които разширяват възможностите на стандартната Java Collections Framework . Най-популярният от тях е Guava (Google Collections Library).

*Не всички интерфейси и класове са представени в диаграмата. Някои бяха пропуснати за по-лесно разбиране.

Основни интерфейси

Диаграмата показва, че има два основни интерфейса, които са внедрени, за да формират останалите класове и интерфейси.

Нека да разгледаме тези интерфейси:

  1. Колекция — обикновена колекция, която съдържа набор от елементи (обекти). Тази колекция има основни методи за работа с елементи: вмъкване ( добавяне , добавяне на всички ), премахване ( премахване , премахване на всички , изчистване ), търсене ( съдържа , съдържа всички ), проверка дали колекцията е празна ( isEmpty ) и получаване на размер ( размер ).

  2. Карта — колекция, структурирана като двойки ключ-стойност. Освен това всеки ключ в картата е уникален: няма два ключа с еднакви стойности. Тази колекция понякога се нарича речник . Картата е отделен интерфейс. Той не реализира интерфейса на колекцията , но е част от рамката на колекциите на Java .

Полезни методи за работа с елементи в карта :

  • вмъкване ( поставяне , поставяне на всички )

  • get ( get , keySet , values , entrySet )

  • премахване ( премахване , изчистване )

  • търсене ( съдържа ключ , съдържа стойност )

  • проверете дали колекцията е празна ( isEmpty )

  • вземете размер ( размер )

Сега нека поговорим повече за всеки от тях.

Интерфейс за събиране

Интерфейсът Collection разширява интерфейса Iterable , който има един метод: iterator() . За нас това означава, че всяка колекция, която наследява Iterable , ще може да върне итератор.

Итераторът е специален обект, който можете да използвате за достъп до елементите на всяка колекция, независимо от нейната конкретна реализация .

Фигурата показва, че 3 интерфейса наследяват интерфейса Collection : List , Queue и Set . Сега ще разгледаме накратко всеки от тях.

Списъкът е подредена колекция, която позволява дублирани стойности. Специфична характеристика на списъка е, че неговите елементи са номерирани и могат да бъдат достъпни чрез номер (индекс).

Опашката съхранява елементи в реда, в който са добавени към опашката.

За разлика от списъка, наборът представлява неподредена колекция, която не позволява повтарящи се елементи. Интерфейсът Set съответства на концепцията за математическо множество .

Реализации на интерфейса Map

Можем да видим, че интерфейсът Map представлява съпоставяне между уникални ключове и стойности.


interface Map<K, V>

където K е типът на ключовете, а V е типът на съхранените стойности.

С помощта на ключ можем да извлечем данни от карта . За да добавим елемент към Map , трябва да посочим ключ и стойност.

Нека да разгледаме някои реализации на Map :

  1. HashMap е реализация на Map , която се основава на хеш таблици. Може да съхранява ключове и стойности от всяHowъв тип, включително null . Редът на елементите не е гарантиран.

  2. LinkedHashMap е структура от данни, която съхранява данни като свързан списък от елементи. Елементите се показват в списъка в реда, в който са добавени.

  3. TreeMap имплементира интерфейса SortedMap (чрез интерфейса NavigableMap ). Елементите в тази структура се съхраняват в сортиран ред (когато се добави нов елемент, колекцията се сортира автоматично). TreeMap е страхотен за съхраняване на големи количества сортирани данни с бързо извличане.

Остарели колекции:

Java има остарели колекции от предишни версии (за да се поддържа обратна съвместимост). Тези стари колекции не трябва да се използват в нов code:

  • Изброяване — аналогично на интерфейса на Iterator ;

  • Vector — подреден списък от елементи и аналогичен на класа ArrayList ;

  • Стек — реализация на структурата на стека от данни, която съхранява и манипулира елементи като това How бихте взаимодействали с купчина книги. Има методи за добавяне на елементи към стека ( push ) и премахването им ( pop );

  • Речник — аналогичен на интерфейса Map , но е абстрактен клас;

  • Hashtable — аналогично на HashMap .

Можете да прочетете повече за Collections Framework в тази статия .

Коментари
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION