java collections framework tutorial
Ten samouczek szczegółowo wyjaśnia strukturę kolekcji Java (JCF) wraz z hierarchią kolekcji, różnymi interfejsami i zaletami JCF:
Mam nadzieję, że te wymowne samouczki na ten temat Seria Java dla początkujących są naprawdę pomocni we wzbogacaniu Twojej wiedzy o Javie.
Nasz poprzedni samouczek zawierał więcej informacji na temat podstawowe operacje we / wy w Javie . W tym samouczku szczegółowo poznamy środowisko Java Collections Framework (JCF).
Java Collections Framework (JCF) zawiera interfejsy, klasy abstrakcyjne i klasy, które mogą zapewnić architekturę do przechowywania i manipulowania grupą obiektów.
Czego się nauczysz:
- Samouczki wideo dotyczące struktury kolekcji Java
- Wniosek
Samouczki wideo dotyczące struktury kolekcji Java
Znajomość Arraylist w Javie:
Ustaw interfejs i interfejs kolejki w Javie z przykładami w czasie rzeczywistym:
HashMap, TreeMap i HashTable w Javie:
Do tej pory widzieliśmy zmienne, które przechowują różne typy danych. Są to pojedyncze jednostki i nie są zbyt pomocne, gdy masz do przechowywania i obsługi ogromnych ilości danych. Jak wiemy, dane są najważniejszym składnikiem przetwarzania komputerowego.
Twoja aplikacja musi być w stanie wyodrębniać i gromadzić dane, przetwarzać je w celu znalezienia przydatnych informacji, a także przekazywać je tam iz powrotem, aby były efektywnie wykorzystywane do docierania do rozwiązań.
W tym świecie oprogramowania przechowujemy dane, które muszą zostać ustrukturyzowane w określony sposób, aby programy mogły przechowywać, odczytywać, przetwarzać i ostatecznie wyświetlać wyniki. Odbywa się to za pomocą struktur danych.
Prawie wszystkie języki programowania obsługują struktury danych. Strukturę danych można zdefiniować jako ustrukturyzowaną reprezentację danych. Języki programowania zapewniają funkcje API (Application Programming Interface) do manipulowania strukturami danych.
Need For Collection Framework
Przed wersją Java 1.2 język programowania Java obsługiwał struktury danych, takie jak tablice, wektory lub tabele skrótów. Wykonywanie operacji na tych strukturach danych nie było łatwe, ponieważ nie było wspólnego interfejsu, który działałby na tych strukturach danych.
Programiści mieli kiedyś trudności z pisaniem algorytmów, które działałyby dla wszystkich struktur danych, i było to dużym problemem. Potrzebny był wspólny interfejs, który działałby spójnie we wszystkich strukturach danych, a także wydajnie wykonywał operacje.
Później Java wymyśliła strukturę kolekcji, która jest grupą klas i interfejsów składających się z różnych operacji, które można wykonać na strukturach danych.
W tym samouczku kolekcji Java omówimy ogólnie strukturę kolekcji Java. Zbadamy każdy z elementów kolekcji w naszych nadchodzących samouczkach.
Struktura kolekcji Java
Zanim zdefiniujemy strukturę kolekcji w Javie, poznajmy znaczenie kolekcji i struktury.
Kolekcję można zdefiniować jako grupę obiektów. Kolekcja to zwykle pojedyncza jednostka składająca się z więcej niż jednego obiektu. Framework to oprogramowanie, które ma gotowy interfejs funkcjonalny lub architekturę, a także zawiera zestaw klas i interfejsów, które mają być używane z dostarczonym interfejsem.
Szkielet kolekcji to ujednolicona, gotowa architektura składająca się z poniższych.
# 1) Algorytmy
Są to metody lub zestaw instrukcji, które mogą pomóc programistom w wyszukiwaniu, sortowaniu i przetwarzaniu zebranych danych. Kolekcja jest dostarczana z interfejsami, klasami i algorytmami.
Aplikacje, które są tworzone przez dziedziczenie struktury kolekcji, mają dostęp do tych algorytmów i używają już zdefiniowanych metod i procedur.
# 2) Interfejsy
Interfejsy w Javie zapewniają abstrakcję implementacji, tj. Używając interfejsów, użytkownik nie zna szczegółów implementacji, ale widzi tylko metody i dane potrzebne do napisania aplikacji. Interfejs kolekcji ma wiele interfejsów, które programista może zaimplementować w celu napisania własnych klas.
# 3) Zajęcia
Klasy Collection Framework to struktury danych, które można zaimplementować w programie. Te klasy implementują interfejs „Collection”, a zatem dziedziczą wszystkie metody i definicje interfejsu kolekcji.
Struktura kolekcji służy do przechowywania kolekcji, która jest grupą obiektów i manipulowania nią.
Framework kolekcji Java składa się z wysokowydajnych algorytmów, które wykonują standardowe operacje, takie jak wyszukiwanie, sortowanie i przetwarzanie. Zapewnia różne standardowe implementacje, w tym LinkedList, TreeSet i HashSet, dla których dostępne są interfejsy.
Następnie przyjrzyjmy się hierarchii kolekcji Java.
Hierarchia kolekcji Java
Wszystkie klasy i interfejsy przedstawione w poniższej hierarchii kolekcji Java należą do pakietu „java.util. *”.
Jak pokazano na powyższym diagramie, Hierarchia kolekcji Java składa się z różnych klas i interfejsów. Jak widać, każda klasa dziedziczy po interfejsie, a wszystkie klasy i interfejsy z kolei dziedziczą z pojedynczego interfejsu „kolekcji”.
Omówmy kilka typowych metod w interfejsie kolekcji wraz z krótkim wprowadzeniem do każdej z klas i interfejsów, które są pokazane w powyższej hierarchii.
Interfejs kolekcji
Interfejs kolekcji jest interfejsem głównym. Wszystkie klasy w strukturze kolekcji implementują interfejs kolekcji. Oznacza to, że każda kolekcja będzie miała metody zadeklarowane w interfejsie kolekcji.
Poniżej przedstawiono niektóre metody interfejsu Collection.
Nie rób | Prototyp metody | Opis |
---|---|---|
7 | domyślny boolean removeIf (filtr predykatu) | Usuń ze zbioru wszystkie elementy, które spełniają dany predykat „filtr”. |
1 | public int size () | Zwraca liczbę elementów w danej kolekcji. |
dwa | public void clear () | Czyści kolekcję, usuwając wszystkie elementy z kolekcji. |
3 | publiczny dodatek boolowski (E e) | Wstawia element e do kolekcji. |
4 | public booleanaddAll (Kolekcja c) | Wstaw wszystkie elementy z kolekcji podanej przez c do kolekcji. |
5 | public boolean remove (element Object) | Usuń element podany przez „element” z kolekcji. |
6 | public boolean removeAll (Collectionc) | Usuń kolekcję c z kolekcji. |
8 | public booleanretainAll (Kolekcja c) | Usuń wszystkie elementy z kolekcji oprócz tych w określonej kolekcji c. |
9 | publiczny Iterator iterator () | Zwróć iterator dla kolekcji. |
10 | public Object () toArray () | Przekonwertuj kolekcję na tablicę. |
jedenaście | publiczny T () toArray (T () a) | Przekonwertuj kolekcję na tablicę z określonym typem zwracanym. |
12 | public boolean isEmpty () | Zwróć, jeśli kolekcja jest pusta lub nie. |
13 | public boolean zawiera (element Object) | Sprawdź, czy kolekcja zawiera dany element (operacja wyszukiwania). |
14 | public booleancontainsAll (Collectionc) | Sprawdź, czy kolekcja zawiera w sobie określoną kolekcję c. |
piętnaście | domyślny spliterator spliterator () | Zwraca rozdzielacz dla określonej kolekcji. |
16 | public booleanequals (element Object) | Służy do dopasowywania dwóch kolekcji. |
17 | domyślny Stream parallelStream () | Zwraca strumień równoległy przy użyciu kolekcji jako źródła. |
18 | domyślny Streamstream () | Zwraca strumień sekwencyjny, używając kolekcji jako źródła. |
19 | public int hashCode () | Zwraca numeryczny kod skrótu kolekcji. |
Iterowalny interfejs
Iterowalny interfejs jest również podstawowym interfejsem struktury kolekcji. Interfejs Collection, który jest interfejsem nadrzędnym wszystkich innych klas, stanowi rozszerzenie interfejsu Iterowalnego. Stąd wszystkie klasy implementują interfejs kolekcji, a także interfejs iterowalny.
Iterowalny interfejs ma tylko jeden iterator metody (), który zwraca iterator (), którego można użyć do iteracji po elementach typu T.
Iterator iterator ()
Interfejs iteratora
Interfejs Iterator zapewnia możliwość iteracji elementów w kierunku do przodu.
Poniżej przedstawiono metody obsługiwane przez ten interfejs.
Nie rób | Prototyp metody | Opis |
---|---|---|
1 | public Object next () | Najpierw zwraca element, a następnie przesuwa kursor, aby wskazywał na następny element. |
dwa | public boolean hasNext () | Sprawdza, czy iterator ma więcej elementów. |
3 | public void remove () | Usuwa element, który jest zwracany przez iterator na końcu. |
Interfejs listy
Interfejs listy dziedziczy interfejs kolekcji. Interfejs listy zawiera struktury danych, które są używane do przechowywania uporządkowanych danych lub kolekcji obiektów. Te struktury danych są typu list. Te struktury danych implementujące interfejs listy mogą mieć zduplikowane wartości lub nie.
Interfejs listy zawiera metody używane do uzyskiwania dostępu, wstawiania lub usuwania elementów z obiektów-list.
Oto różne klasy implementujące interfejs List:
najlepszy program do monitorowania temp. procesora i procesora graficznego
- ArrayList
- Połączona lista
- Wektor
- Stos
Omówimy pokrótce każdą z tych klas. Nasze kolejne tematy będą zawierały szczegółowe omówienie każdej z klas ramowych kolekcji.
# 1) ArrayList
ArrayList to najprostsza implementacja interfejsu List. ArrayList zachowuje kolejność reklam i nie jest zsynchronizowana.
Ogólna definicja struktury danych ArrayList (Collection) jest następująca:
List list1= new ArrayList ();
Po zdefiniowaniu listy możesz użyć metody „dodaj”, aby dodać elementy. Zauważ, że wewnętrznie ArrayList używał mechanizmu tablicy dynamicznej.
Zobacz poniższe przykłady, które tworzą kolekcję kolorów ArrayList.
import java.util.*; class Main { public static void main(String args()) { //Creating arraylist of String objects ArrayList color_list=new ArrayList(); //populate the arraylist with add method color_list.add('Red'); color_list.add('Green'); color_list.add('Blue'); color_list.add('Cyan'); color_list.add('Magenta'); color_list.add('Yellow'); //Traverse the list through Iterator Iterator itr=color_list.iterator(); System.out.println('The contents of the arraylist are:'); while(itr.hasNext()){ System.out.println(itr.next()); } } }
Wynik:
Powyższy program przedstawia demonstrację kolekcji ArrayList. Dodajemy wartości kolorów do kolekcji, a następnie przechodzimy przez kolekcję, aby wyświetlić poszczególne wartości w kolekcji za pomocą iteratora.
# 2) LinkedList
Kolekcja LinkedList wewnętrznie wykorzystuje mechanizm podwójnie połączonych list do przechowywania elementów. Może zawierać zduplikowane elementy. Operacje kolekcji LinkedList są szybsze, ponieważ przesuwanie elementów nie jest wymagane.
Ogólna definicja tworzenia listy połączonej jest następująca:
List list2 = new LinkedList ();
Poniższy program demonstruje połączona lista nazw numerów .
import java.util.*; class Main { public static void main(String args()) { //linked list of String objects LinkedList linkedlist_num=new LinkedList(); linkedlist_num.add('one'); linkedlist_num.add('two'); linkedlist_num.add('three'); linkedlist_num.add('four'); linkedlist_num.add('five'); //iterate over the linked list to display contents Iterator itr=linkedlist_num.iterator(); System.out.println('The contents of the linked list are:'); while(itr.hasNext()) { System.out.println(itr.next()); } } }
Wynik:
W ten sposób tworzymy połączoną listę, a następnie dodajemy do niej elementy metodą „add”. Następnie za pomocą iteratora przechodzimy przez połączoną listę i wyświetlamy każdy element.
# 3) Wektor
Vector jest podobny do ArrayList i używa dynamicznej tablicy do przechowywania elementów, takich jak ArrayList. Ale wektor obsługuje wiele niezależnych metod poza kolekcją, co sprawia, że lepszym wyborem jest wybranie preferowanej kolekcji.
Ogólna definicja zbioru wektorów to:
List list3 = new Vector();
Zauważ, że chociaż vector i ArrayList używają tego samego mechanizmu dynamicznych tablic, elementy wektorowe są synchronizowane.
Przedstawiony poniżej program Java demonstruje użycie wektorów w strukturze kolekcji .
import java.util.*; public class Main { public static void main(String args()) { Vector subject_vector=new Vector(); subject_vector.add('English'); subject_vector.add('Hindi'); subject_vector.add('Maths'); subject_vector.add('Science'); Iterator itr=subject_vector.iterator(); System.out.println('Vector contents:'); while(itr.hasNext()) { System.out.println(itr.next()); } } }
Wynik:
W tym programie zdefiniowaliśmy zbiór wektorów składający się z przedmiotów. Dodajemy różne tematy, a następnie używamy iteratora do wyprowadzania elementów.
# 4) Stos
Struktura danych stosu implementuje sposób wstawiania elementów ostatni na wejściu, pierwszy na wyjściu (LIFO). Stos jest podklasą wektora klasowego (patrz powyższy diagram hierarchii kolekcji). Oprócz własnych metod zbiór stosu obsługuje również metody zbierania wektorów.
Ogólna definicja kolekcji Stack to:
List list4 = new Stack();
Poniższy program wdraża kolekcję Stack .
import java.util.*; public class Main { public static void main(String args()) { Stack even_stack = new Stack (); even_stack.push(2); even_stack.push(4); even_stack.push(6); even_stack.push(8); even_stack.push(10); System.out.println('The element removed from stack: ' + even_stack.pop()); Iterator itr=even_stack.iterator(); System.out.println('The contents of the stack are:'); while(itr.hasNext()) { System.out.print(itr.next() + ' '); } } }
Wynik:
Jak widać w powyższej implementacji, nowe elementy są dodawane do stosu przy użyciu 'Pchać' operacja. Stos ma pojedynczy punkt wejścia zwany „Górą stosu”, a elementy są wpychane na stos na górze. Tak więc ostatni dodany element znajduje się na szczycie stosu.
Podobnie jak dodawanie, elementy są również usuwane z jednego końca, czyli z góry stosu. Aby usunąć elementy, używana jest operacja „pop”. Dlatego jeśli wywołasz pop (), element na górze stosu zostanie usunięty.
Na powyższym wyjściu wstawiamy element 2, 4, 6,8,10, a następnie wywołujemy pop (), aby usunąć 10.
Interfejs kolejki
Kolekcje pochodzące z interfejsu kolejki są zgodne z kolejnością FIFO (pierwsze weszło, pierwsze wyszło). Elementy są wstawiane na jednym końcu i usuwane z drugiego końca. Dlatego element wprowadzony jako pierwszy jest elementem, który jest usuwany jako pierwszy.
Poniżej podano kolekcje obsługujące interfejs zapytań.
- Kolejka priorytetowa
- i interfejs
- ArrayDeque
Omówmy pokrótce każdą z nich.
# 1) PriorityQueue
W kolekcji PriorityQueue przechowywane elementy są przetwarzane na podstawie ich priorytetów. W kolejce priorytetowej nie można przechowywać wartości null.
Ogólna definicja kolejki priorytetowej jest następująca:
Queue q1 = new PriorityQueue();
Poniższy program realizuje kolejkę priorytetową.
import java.util.*; public class Main { public static void main(String args()) { PriorityQueue color_queue=new PriorityQueue(); color_queue.add('red'); color_queue.add('green'); color_queue.add('blue'); color_queue.add('cyan'); color_queue.add('magenta'); color_queue.add('yellow'); System.out.println('Priority Queue elements:'); System.out.println('head:'+color_queue.peek()); System.out.println('Other elements in Priority Queue:'); Iterator itr=color_queue.iterator(); while(itr.hasNext()) { System.out.print(itr.next() + ' '); } System.out.println('
'); color_queue.remove(); System.out.println('After removing element, new head:'+color_queue.element()); System.out.println('
'); color_queue.poll(); System.out.println('After removing another element, Priority Queue :'); Iterator itr2=color_queue.iterator(); while(itr2.hasNext()) { System.out.print(itr2.next() + ' '); } } }
Wynik:
Po raz kolejny używamy kolorów jako elementów kolejki priorytetowej. W powyższym programie wykorzystaliśmy metody add i remove, aby odpowiednio dodać elementy do kolejki i usunąć element. Używamy metody peek (), która zwraca element, na który wskazuje w kolejce priorytetowej.
Na koniec za pomocą iteratora wyświetlane są elementy kolejki priorytetowej.
# 2) interfejs dotykowy
Deque lub „kolejka dwustronna” to struktura danych, która umożliwia dodawanie i usuwanie elementów z obu końców. Interfejs deque w strukturze kolekcji Java, który rozszerza interfejs kolejki.
Zapewnia funkcjonalność deque i ma klasę „ArrayDeque” dziedziczącą po niej.
# 3) ArrayDeque
ArrayDeque implementuje interfejs deque.
Ogólna definicja ArrayDeque jest następująca:
Deque d = new ArrayDeque();
ArrayDeque umożliwia korzystanie z funkcjonalności Deque. W przeciwieństwie do innych kolekcji, takich jak ArrayList lub stack, ArrayDeque nie ma ograniczeń co do swojej pojemności.
Poniższy przykład przedstawia implementację ArrayDeque.
import java.util.*; public class Main { public static void main(String() args) { //Creating Deque and adding elements Deque deque = new ArrayDeque (); deque.add(10); deque.add(20); deque.add(30); System.out.println('Deque Elements:'); //Traversing elements for (Integer num : deque) { System.out.println(num); } } }
Wynik:
W powyższym programie definiujemy kolekcję ArrayDeque typu integer i dodajemy do niej elementy integer za pomocą metody add. Kolekcja jest następnie przeszukiwana przy użyciu konstrukcji for.
Ustaw interfejs
Interfejs zestawu jest częścią pakietu java.util i wywodzi się z interfejsu kolekcji. Set to struktura, która nie pozwala, aby kolekcja miała zduplikowane wartości, a także więcej niż jedną wartość null.
Poniższe klasy implementują interfejs zestawu.
- HashSet
- LinkedHashSet
- TreeSet
# 1) HashSet
Kolekcja HashSet, która implementuje interfejs Set, zawiera różne wartości. Ta kolekcja używa techniki mieszania do przechowywania elementów i używa tabeli skrótów do przechowywania elementów.
T Ogólna definicja kolekcji HashSet jest pokazana poniżej.
Set s1 = new HashSet();
Podaliśmy implementację HashSet w poniższym programie.
import java.util.*; public class Main { public static void main(String args()) { //Create HashSet set_subjects HashSet set_subjects=new HashSet(); System.out.println('Elements in the given hashsetset_subjects are:'); set_subjects.add('Maths'); set_subjects.add('Computers'); set_subjects.add('English'); set_subjects.add('French'); //Traverse the hashset Iterator itr=set_subjects.iterator(); while(itr.hasNext()) { System.out.println(itr.next()); } } }
Wynik:
W powyższym programie tworzymy kolekcję tematów HashSet, a następnie przechodzimy przez nią za pomocą iteratora, aby wyświetlić elementy w kolekcji.
# 2) LinkedHashSet
LinkedHashSet implementuje zestaw interfejsu i rozszerza HashSet (hierarchię kolekcji odwołań). LinkedHashSet to połączona reprezentacja listy interfejsu Set. LinkedHashSet zawiera unikatowe elementy, ale dopuszcza wartości null.
Ogólna definicja LinkedHashSet jest podana poniżej.
Set s2 = new LinkedHashSet();
Implementację dla LinkedHashSet podano poniżej.
import java.util.*; public class Main { public static void main(String args()) { LinkedHashSet set_subjects=new LinkedHashSet(); System.out.println('Elements in the LinkedHashSet set_subjects:'); set_subjects.add('Maths'); set_subjects.add('Computers'); set_subjects.add('English'); set_subjects.add('Sanskrit'); Iterator itr=set_subjects.iterator(); while(itr.hasNext()) { System.out.println(itr.next()); } } }
Wynik:
Po raz kolejny korzystamy z tytułów książek do tworzenia Linkedhashset. Jak widać z danych wyjściowych, kolejność dodawania jest utrzymywana przez linkedHashSet.
SortedSet Interface
Interfejs SortedSet umożliwia pełne uporządkowanie elementów. Zawiera metody zapewniające naturalne uporządkowanie elementów. Elementy w kolekcji implementującej interfejs SortedSet są uporządkowane w kolejności rosnącej.
Klasa TreeSet jest jednym z przykładów implementujących interfejs SortedSet.
Zestaw drzew
Ogólna definicja zestawu drzew jest następująca:
Set s3 = new TreeSet();
TreeSet implementuje interfejs SortedSet i zawiera unikatowe elementy. Przechowywanie i pobieranie jest dość szybkie, a następnie elementy są ułożone w porządku rosnącym.
import java.util.*; public class Main{ public static void main(String args()) { //create a treeset of integers TreeSet set_oddnums=new TreeSet (); set_oddnums.add(1); set_oddnums.add(3); set_oddnums.add(5); set_oddnums.add(7); set_oddnums.add(9); System.out.println('Elements in TreeSet are:'); //traverse the treeset using iterator Iterator itr=set_oddnums.iterator(); while(itr.hasNext()) { System.out.print(itr.next() + ' '); } } }
Wynik:
W powyższym programie utworzyliśmy i dodaliśmy do kolekcji liczby nieparzyste za pomocą metod add. Następnie za pomocą iteratora wyprowadzamy elementy w kolekcji.
Zalety struktury kolekcji Java
- Zredukowane programowanie: Struktura kolekcji zawiera wszystkie interfejsy i klasy zawierające metody, które mogą umożliwić programistom pisanie wydajnych programów. W ten sposób programista nie musi skupiać się na programowaniu.
- Spójne metody i API: Wszystkie klasy mają wspólne metody, które działają na danych. Te API są spójne we wszystkich klasach i programista nie musi się martwić, że będzie miał zbyt wiele różnych metod dla każdej klasy.
- Zwiększ prędkość i dokładność: Możesz pisać bardzo wydajne programy przy użyciu struktury kolekcji, a także szybsze i dokładne programy, ponieważ struktura kolekcji zapewnia pełną funkcjonalność implementacji struktur danych i kolekcji.
- Ułatwia ponowne wykorzystanie oprogramowania: Struktury danych i algorytmy struktury kolekcji Java są wielokrotnego użytku.
- Interoperacyjność między niepowiązanymi API: Collection API umożliwiają współdziałanie nawet pomiędzy niepowiązanymi API.
- Mniej wysiłków przy projektowaniu nowych interfejsów API: Programiści mogą korzystać ze standardowych interfejsów API kolekcji i na ich podstawie projektować nowe interfejsy API. Nie muszą się męczyć, aby napisać zupełnie nowe interfejsy API.
Często Zadawane Pytania
# 1) Jakie jest zastosowanie struktury kolekcji w Javie?
Odpowiedź: Struktura kolekcji oferuje gotowe algorytmy, interfejsy i klasy, które umożliwiają programistom pisanie bardzo wydajnych programów, które mogą przechowywać i przetwarzać dane.
# 2) Dlaczego kolekcja to framework?
Odpowiedź: Framework to zbiór klas, interfejsów i algorytmów wielokrotnego użytku. Struktura kolekcji jest również kolekcją wielokrotnego użytku klas struktur danych i algorytmów działających na tych klasach.
# 3) Co to jest Java Collections API w Javie?
jak zrobić aplikację jednostronicową przy użyciu angularjs
Odpowiedź: Interfejs API kolekcji Java udostępnia interfejsy i klasy, które można rozszerzyć i zaimplementować w celu wykorzystania struktur danych, które są niczym innym jak kolekcjami.
# 4) Jaka jest różnica między zbieraniem danych a kolekcjami w Javie?
Odpowiedź: Kolekcja jest interfejsem podstawowym w strukturze kolekcji, podczas gdy „kolekcje” to klasa. Oba są częścią pakietu java.util.
**** Więcej szczegółów i przykładów środowiska Java Collections Framework: ****
Porównanie między listą, zestawem i kolejką:
Lista | Zestaw | Kolejka |
---|---|---|
Zamówienie reklamowe zostało zachowane | Zamówienie reklamowe nie jest zachowywane w zestawie Hash | Zamówienie reklamowe zostało zachowane. |
Może zawierać zduplikowane elementy | Nie może zawierać zduplikowanych elementów | Może zawierać zduplikowane elementy. |
Wstawianie i usuwanie tablicy można wykonać dla dowolnego indeksu. | Usuń określony element. | Można wyjąć tylko ostatni wstawiony element. Na końcu następuje również wstawianie elementów. |
Klasa listy tablic
W Array alokacja pamięci jest stała. Ale w ArrayList pamięć może być przydzielana dynamicznie. Ta klasa ArrayList utrzymuje kolejność wstawiania i można wstawiać zduplikowane elementy.
Program demonstracyjny dla listy tablic:
public class ArrayListDemo { public static void main(String() args) { ArrayList li = new ArrayList (); li.add(1); li.add(2); li.add(3); li.remove(0); for (Integer temp : li) { System.out.println(temp); } System.out.println('=========='); ArrayList l = new ArrayList(); l.add('text1'); l.add('text2'); l.add('text3'); for (String temp : l) { System.out.println(temp); } System.out.println('=========='); ArrayList al=new ArrayList(); al.add(1); al.add(2); al.forEach((a)->;System.out.println(a)); } }
Klasa LinkedList
Struktura danych listy połączonej zawiera węzły, a ten węzeł będzie zawierał dwie części:
- Dane
- Odniesienie do następnego elementu
Pierwszy węzeł nie jest oddzielnym węzłem. Zawiera tylko odniesienie i nazywa się głową. Ostatni węzeł jest pusty.
Program demonstracyjny:
public class LinkedListDemo { public static void main(String() args) { LinkedList list =new LinkedList(); list.add(22); list.add(44); list.add(46); list.add(46); list.add(46); for(Integer temp:list) { System.out.println(temp); } Iterator it =list.iterator(); while(it.hasNext()) { System.out.println(it.next()); } System.out.println('=========='); for (int i=0;i 
Kolejka
Kolejka jest w strukturze danych First In First Out (FIFO). Jeśli wywołasz metodę remove, zawsze pierwszy wstawiony element zostanie usunięty z kolejki. Tak więc kolejka jest używana w aplikacji czasu rzeczywistego, w której dane muszą być pobierane w kolejności wstawienia.
Przykładowy program:
public class QueueDemo { public static void main(String() args) { PriorityQueue pq=new PriorityQueue(); pq.add(1); pq.add(2); pq.add(3); pq.add(4); pq.add(5); pq.add(6); pq.add(7); for(int temp : pq) { System.out.println(temp); } pq.remove(); System.out.println('queue after removing a element'); System.out.println(pq); } }

Zestaw
Zestaw kolekcji nie pozwoli na zduplikowane elementy. Możesz użyć ustalonej struktury danych, gdy chcesz przetwarzać gromadzenie danych bez powielania i gdy nie ma potrzeby utrzymywania zamówienia reklamowego.
Program demonstracyjny:
public class demohashset { public static void main (String() args){ HashSet hs=new HashSet(); hs.add(23); hs.add(24); hs.add(25); hs.add(26); hs.add(27); hs.add(28); hs.add(293); hs.add(203); hs.add(263); hs.add(243); hs.add(243); (int temp:hs) { System.out.println(temp); } hs.remove(24); hs.remove(23); System.out.println('==============='); System.out.println('after removing a element ::::'); System.out.println('==============='); hs.forEach((temp)->System.out.println(temp)); ; } }

Interfejs MAP
- Jeśli chcesz przetwarzać gromadzenie elementów z parą klucz i wartość, możesz użyć struktury danych mapy, ponieważ mapa jest obiektem, który może mapować klucze na wartości.
- Mapa nie może zawierać zduplikowanych kluczy.
- Ważnymi implementacjami map są HashMap, Treemap, LinkedHashMap, HashTable.
Różnica między HashMap, Treemap, LinkedHashMap i HashTable:
HashMap TreeMap LinkedHashmap HashTable Dozwolone są puste klucze i wartości Dozwolone są tylko wartości null. Dozwolone są puste klucze i wartości. Nie zezwoli na puste klucze i wartości. Niezsynchronizowane Niezsynchronizowane Niezsynchronizowane zsynchronizowane Nie ma gwarancji utrzymania porządku w iteracji Sortowanie odbywa się w oparciu o naturalny porządek. Zamówienie reklamowe zostanie zachowane Zamówienie reklamowe nie zostało utrzymane.
Program demonstracyjny:
public class HashMapDemo { public static void main(String() args) { HashMap m=new HashMap(); m.put(1, 'one'); m.put(2, 'two'); m.put(3, 'three'); m.put(4, 'four'); m.put(null, 'one'); m.put(null, null); System.out.println(m); TreeMap tm =new TreeMap(); tm.put('R', 'red'); tm.put('B', null); tm.put('G', 'green'); System.out.println(tm); Hashtable ht =new Hashtable(); ht.put(1, 'one'); ht.put(2, 'two'); ht.put(3, 'three'); ht.put(4, 'four'); System.out.println(ht); } }

Kluczowe punkty, na które należy zwrócić uwagę:
- Interfejsy listy, kolejki, zestawu rozszerzają interfejs kolekcji, a ten interfejs kolekcji ma wspólne metody, takie jak dodawanie, usuwanie itp.
- Zamówienie reklamowe jest przechowywane na liście, a zestaw nie może zawierać zduplikowanych elementów. Struktura danych kolejka jest pierwsza w pierwszej.
- Mapa będzie zawierać pary klucz i wartość. HashMap, Treemap, Hashtable, Linked HashMap to ważne implementacje interfejsu mapy.
Wniosek
Ten samouczek dał nam wprowadzenie do struktury kolekcji Java. Pokrótce omówiliśmy wszystkie klasy i interfejsy, które są częścią struktury kolekcji Java.
W naszych kolejnych samouczkach z tej serii dowiemy się szczegółowo o każdej z tych klas i interfejsów.
Możesz dowiedzieć się więcej o odbiciach w JAVA w naszym nadchodzącym samouczku !!!
POPRZEDNIA samouczek | NEXT Tutorial
rekomendowane lektury
- Samouczek dotyczący refleksji w języku Java z przykładami
- Dogłębne samouczki dotyczące Eclipse dla początkujących
- Samouczek Java SWING: kontener, komponenty i obsługa zdarzeń
- Samouczek JAVA dla początkujących: ponad 100 praktycznych samouczków wideo Java
- Modyfikatory dostępu w Javie - samouczek z przykładami
- Ciąg w języku Java z buforem ciągów i samouczek dotyczący tworzenia ciągów
- Wprowadzenie do języka programowania Java - samouczek wideo
- Cucumber Selenium Tutorial: Cucumber Java Selenium Integracja WebDriver