logo

Колекції на Java

  1. Java Collection Framework
  2. Ієрархія структури колекції
  3. Інтерфейс колекції
  4. Інтерфейс ітератора

The Колекція на Java це структура, яка забезпечує архітектуру для зберігання та керування групою об’єктів.

Колекції Java можуть виконувати всі операції, які ви виконуєте над даними, такі як пошук, сортування, вставка, маніпуляції та видалення.

Колекція Java означає окрему одиницю об’єктів. Framework Java Collection надає багато інтерфейсів (Set, List, Queue, Deque) і класів ( ArrayList , вектор, LinkedList , PriorityQueue , HashSet, LinkedHashSet, TreeSet).

Що таке колекція в Java

Колекція представляє окрему одиницю об’єктів, тобто групу.

Що таке фреймворк в Java

  • Він надає готову архітектуру.
  • Він являє собою набір класів та інтерфейсів.
  • Це необов'язково.

Що таке структура колекції

Структура колекції представляє уніфіковану архітектуру для зберігання та керування групою об’єктів. Це має:

  1. Інтерфейси та їх реалізації, тобто класи
  2. Алгоритм

Чи ти знаєш?
  • Які є два способи ітерації елементів колекції?
  • Яка різниця між класами ArrayList і LinkedList у рамках колекції?
  • Яка різниця між класами ArrayList і Vector у рамках колекції?
  • Яка різниця між класами HashSet і HashMap у рамках колекції?
  • Яка різниця між класом HashMap і Hashtable?
  • Яка різниця між інтерфейсом Iterator та Enumeration у структурі колекції?
  • Як ми можемо сортувати елементи об’єкта? Яка різниця між інтерфейсами Comparable і Comparator?
  • Що означає метод hashcode()?
  • Яка різниця між колекцією Java і колекціями Java?

Ієрархія структури колекції

Давайте подивимося на ієрархію структури Collection. The java.util пакет містить усе класи і інтерфейси для основи колекції.

Ієрархія фреймворку колекції Java

Методи інтерфейсу колекції

В інтерфейсі колекції оголошено багато методів. Вони такі:

Немає.методопис
1публічне логічне додавання (E e)Він використовується для вставки елемента в цю колекцію.
2public boolean addAll(Collection c)Він використовується для вставки вказаних елементів колекції в колекцію, що викликається.
3public boolean remove(Object element)Він використовується для видалення елемента з колекції.
4public boolean removeAll(Collection c)Він використовується для видалення всіх елементів зазначеної колекції з колекції, що викликається.
5логічне значення за замовчуванням removeIf (фільтр предикатів)Він використовується для видалення всіх елементів колекції, які задовольняють вказаний предикат.
6public boolean retainAll(Collection c)Використовується для видалення всіх елементів викликаної колекції, крім зазначеної колекції.
7public int size()Він повертає загальну кількість елементів у колекції.
8public void clear()Він видаляє загальну кількість елементів із колекції.
9public boolean містить (елемент Object)Використовується для пошуку елемента.
10public boolean containsAll(Collection c)Використовується для пошуку вказаної колекції в колекції.
одинадцятьпублічний ітератор iterator()Він повертає ітератор.
12public Object[] toArray()Він перетворює колекцію в масив.
13public T[] toArray(T[] a)Він перетворює колекцію в масив. Тут тип середовища виконання повернутого масиву є типом зазначеного масиву.
14публічне логічне значення isEmpty()Він перевіряє, чи колекція порожня.
п'ятнадцятьТиповий потік parallelStream()Він повертає, можливо, паралельний потік із колекцією як джерелом.
16за замовчуванням Stream stream()Він повертає послідовний потік із колекцією як джерелом.
17за замовчуванням Spliterator spliterator()Він генерує Spliterator над вказаними елементами в колекції.
18public boolean equals (елемент Object)Він відповідає двом колекціям.
19public int hashCode()Він повертає номер хеш-коду колекції.

Інтерфейс ітератора

Інтерфейс ітератора надає можливість ітерації елементів лише в прямому напрямку.

Методи інтерфейсу Iterator

В інтерфейсі Iterator є лише три методи. Вони є:

Немає.методопис
1public boolean hasNext()Він повертає true, якщо ітератор має більше елементів, інакше повертає false.
2публічний об'єкт next()Він повертає елемент і переміщує покажчик курсору до наступного елемента.
3public void remove()Він видаляє останні елементи, повернуті ітератором. Менше використовується.

Ітерований інтерфейс

Ітеративний інтерфейс є кореневим інтерфейсом для всіх класів колекції. Інтерфейс Collection розширює інтерфейс Iterable, тому всі підкласи інтерфейсу Collection також реалізують інтерфейс Iterable.

Він містить лише один абстрактний метод. тобто,

 Iterator iterator() 

Він повертає ітератор над елементами типу T.

алгоритм сортування купи

Інтерфейс колекції

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

Деякі з методів інтерфейсу Collection — Boolean add ( Object obj), Boolean addAll ( Collection c), void clear() тощо, які реалізуються всіма підкласами інтерфейсу Collection.


Інтерфейс списку

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

Інтерфейс списку реалізований класами ArrayList, LinkedList, Vector і Stack.

Щоб створити екземпляр інтерфейсу List, ми повинні використовувати:

 List list1= new ArrayList(); List list2 = new LinkedList(); List list3 = new Vector(); List list4 = new Stack(); 

Існують різні методи в інтерфейсі списку, які можна використовувати для вставки, видалення та доступу до елементів зі списку.

Нижче наведено класи, які реалізують інтерфейс List.


ArrayList

Клас ArrayList реалізує інтерфейс List. Він використовує динамічний масив для зберігання повторюваних елементів різних типів даних. Клас ArrayList підтримує порядок вставки та не є синхронізованим. До елементів, що зберігаються в класі ArrayList, можна отримати довільний доступ. Розглянемо наступний приклад.

 import java.util.*; class TestJavaCollection1{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add('Ravi');//Adding object in arraylist list.add('Vijay'); list.add('Ravi'); list.add('Ajay'); //Traversing list through Iterator Iterator itr=list.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

Вихід:

 Ravi Vijay Ravi Ajay 

LinkedList

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

Розглянемо наступний приклад.

 import java.util.*; public class TestJavaCollection2{ public static void main(String args[]){ LinkedList al=new LinkedList(); al.add('Ravi'); al.add('Vijay'); al.add('Ravi'); al.add('Ajay'); Iterator itr=al.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

Вихід:

 Ravi Vijay Ravi Ajay 

Вектор

Vector використовує динамічний масив для зберігання елементів даних. Він схожий на ArrayList. Однак він синхронізований і містить багато методів, які не є частиною структури Collection.

Розглянемо наступний приклад.

 import java.util.*; public class TestJavaCollection3{ public static void main(String args[]){ Vector v=new Vector(); v.add('Ayush'); v.add('Amit'); v.add('Ashish'); v.add('Garima'); Iterator itr=v.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

Вихід:

 Ayush Amit Ashish Garima 

Стек

Стек є підкласом вектора. Він реалізує структуру даних 'останній прийшов - перший вийшов', тобто стек. Стек містить усі методи класу Vector, а також надає його методи, такі як boolean push(), boolean peek(), boolean push(object o), які визначають його властивості.

Розглянемо наступний приклад.

 import java.util.*; public class TestJavaCollection4{ public static void main(String args[]){ Stack stack = new Stack(); stack.push('Ayush'); stack.push('Garvit'); stack.push('Amit'); stack.push('Ashish'); stack.push('Garima'); stack.pop(); Iterator itr=stack.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

Вихід:

 Ayush Garvit Amit Ashish 

Інтерфейс черги

Інтерфейс черги підтримує порядок «перший прийшов – перший вийшов». Його можна визначити як упорядкований список, який використовується для зберігання елементів, які збираються обробити. Існують різні класи, такі як PriorityQueue, Deque та ArrayDeque, які реалізують інтерфейс Queue.

Інтерфейс черги можна створити як:

 Queue q1 = new PriorityQueue(); Queue q2 = new ArrayDeque(); 

Існують різні класи, які реалізують інтерфейс черги, деякі з них наведено нижче.


PriorityQueue

Клас PriorityQueue реалізує інтерфейс Queue. Він містить елементи або об’єкти, які мають бути оброблені за їхніми пріоритетами. PriorityQueue не дозволяє зберігати нульові значення в черзі.

Розглянемо наступний приклад.

 import java.util.*; public class TestJavaCollection5{ public static void main(String args[]){ PriorityQueue queue=new PriorityQueue(); queue.add('Amit Sharma'); queue.add('Vijay Raj'); queue.add('JaiShankar'); queue.add('Raj'); System.out.println('head:'+queue.element()); System.out.println('head:'+queue.peek()); System.out.println('iterating the queue elements:'); Iterator itr=queue.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } queue.remove(); queue.poll(); System.out.println('after removing two elements:'); Iterator itr2=queue.iterator(); while(itr2.hasNext()){ System.out.println(itr2.next()); } } } 

Вихід:

 head:Amit Sharma head:Amit Sharma iterating the queue elements: Amit Sharma Raj JaiShankar Vijay Raj after removing two elements: Raj Vijay Raj 

І інтерфейс

Інтерфейс Deque розширює інтерфейс Queue. У Deque ми можемо видаляти та додавати елементи з обох сторін. Deque означає подвійну чергу, яка дозволяє нам виконувати операції на обох кінцях.

Deque можна створити як:

 Deque d = new ArrayDeque(); 

ArrayDeque

Клас ArrayDeque реалізує інтерфейс Deque. Це полегшує нам використання Deque. На відміну від черги, ми можемо додавати або видаляти елементи з обох кінців.

ArrayDeque швидший за ArrayList і Stack і не має обмежень по місткості.

Розглянемо наступний приклад.

 import java.util.*; public class TestJavaCollection6{ public static void main(String[] args) { //Creating Deque and adding elements Deque deque = new ArrayDeque(); deque.add('Gautam'); deque.add('Karan'); deque.add('Ajay'); //Traversing elements for (String str : deque) { System.out.println(str); } } } 

Вихід:

 Gautam Karan Ajay 

Встановити інтерфейс

Set Interface в Java присутній у пакеті java.util. Він розширює інтерфейс колекції. Він представляє невпорядкований набір елементів, який не дозволяє нам зберігати повторювані елементи. Ми можемо зберегти щонайбільше одне нульове значення в Set. Набір реалізований HashSet, LinkedHashSet і TreeSet.

Набір можна створити як:

 Set s1 = new HashSet(); Set s2 = new LinkedHashSet(); Set s3 = new TreeSet(); 

HashSet

Клас HashSet реалізує інтерфейс Set. Він представляє колекцію, яка використовує хеш-таблицю для зберігання. Хешування використовується для зберігання елементів у HashSet. Він містить унікальні предмети.

Розглянемо наступний приклад.

 import java.util.*; public class TestJavaCollection7{ public static void main(String args[]){ //Creating HashSet and adding elements HashSet set=new HashSet(); set.add('Ravi'); set.add('Vijay'); set.add('Ravi'); set.add('Ajay'); //Traversing elements Iterator itr=set.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

Вихід:

 Vijay Ravi Ajay 

LinkedHashSet

Клас LinkedHashSet представляє реалізацію інтерфейсу встановлення LinkedList. Він розширює клас HashSet і реалізує інтерфейс Set. Як і HashSet, він також містить унікальні елементи. Він підтримує порядок вставки та дозволяє нульові елементи.

Розглянемо наступний приклад.

 import java.util.*; public class TestJavaCollection8{ public static void main(String args[]){ LinkedHashSet set=new LinkedHashSet(); set.add('Ravi'); set.add('Vijay'); set.add('Ravi'); set.add('Ajay'); Iterator itr=set.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

Вихід:

 Ravi Vijay Ajay 

Інтерфейс SortedSet

SortedSet є альтернативою інтерфейсу Set, який забезпечує загальне впорядкування своїх елементів. Елементи SortedSet розташовані в порядку зростання (зростання). SortedSet надає додаткові методи, які перешкоджають природному впорядкуванню елементів.

SortedSet можна створити як:

 SortedSet set = new TreeSet(); 

TreeSet

Клас Java TreeSet реалізує інтерфейс Set, який використовує дерево для зберігання. Як і HashSet, TreeSet також містить унікальні елементи. Однак час доступу та пошуку TreeSet досить швидкий. Елементи в TreeSet зберігаються в порядку зростання.

Розглянемо такий приклад:

 import java.util.*; public class TestJavaCollection9{ public static void main(String args[]){ //Creating and adding elements TreeSet set=new TreeSet(); set.add('Ravi'); set.add('Vijay'); set.add('Ravi'); set.add('Ajay'); //traversing elements Iterator itr=set.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

Вихід:

 Ajay Ravi Vijay 
Що ми будемо вивчати в Java Collections Framework
  1. Клас ArrayList
  2. Клас LinkedList
  3. Інтерфейс списку
  4. Клас HashSet
  5. Клас LinkedHashSet
  6. Клас TreeSet
  7. Клас PriorityQueue
  8. Інтерфейс карти
  9. Клас HashMap
  10. Клас LinkedHashMap
  11. Клас TreeMap
  12. Клас хеш-таблиці
  13. Сортування
  14. Порівняний інтерфейс
  15. Інтерфейс компаратора
  16. Клас властивостей в Java