java collections framework tutorial
Tento výukový program podrobne vysvetľuje rámec Java Collections Framework (JCF) spolu s hierarchiou zbierok, rôznymi rozhraniami a výhodami JCF:
Dúfam, že o tom budú veľavravné návody Séria Java pre začiatočníkov sú skutočne užitočné pri obohatení vašich znalostí o jazyku Java.
Náš predchádzajúci návod stručne informoval o základné I / O operácie v Jave . V tomto výučbe sa podrobne dozvieme o prostredí Java Collections Framework (JCF).
Java Collections Framework (JCF) obsahuje rozhrania, abstraktné triedy a triedy, ktoré poskytujú architektúru na ukladanie a manipuláciu so skupinou objektov.
Čo sa dozviete:
- Videonávody na platforme Java Collections Framework
- Záver
Videonávody na platforme Java Collections Framework
Znalosť Arraylistu v Jave:
Nastavte rozhranie a frontové rozhranie v prostredí Java pomocou príkladov v reálnom čase:
HashMap, TreeMap a HashTable v Jave:
Doteraz sme videli premenné, ktoré ukladajú rôzne typy údajov. Jedná sa o jednotné jednotky a nie sú veľmi užitočné, ak máte obrovské množstvo údajov, ktoré je potrebné uložiť a spracovať. Ako vieme, údaje sú najdôležitejšou zložkou počítačového spracovania.
Vaša aplikácia musí byť schopná extrahovať a zhromažďovať údaje, spracovávať ich, aby zistila užitočné informácie, a tiež ich odovzdávať tam a späť, aby sa mohla efektívne využívať na dosiahnutie riešení.
V tomto softvérovom svete ukladáme údaje, ktoré je potrebné osobitne štruktúrovať, aby softvérové programy boli schopné ukladať, čítať, spracovávať a nakoniec vydávať výsledky. To sa deje pomocou dátových štruktúr.
Takmer všetky programovacie jazyky podporujú dátové štruktúry. Dátovú štruktúru je možné definovať ako štruktúrované znázornenie údajov. Programovacie jazyky poskytujú funkcie API (Application Programming Interface) na manipuláciu s dátovými štruktúrami.
Rámec Need for Collection
Pred jazykom Java 1.2 podporoval programovací jazyk Java dátové štruktúry, ako sú polia, vektory alebo hašovacie tabuľky. Vykonávanie operácií na týchto dátových štruktúrach nebolo ľahké, pretože neexistovalo spoločné rozhranie, ktoré by fungovalo na týchto dátových štruktúrach.
Pre programátorov bolo ťažké napísať algoritmy, ktoré by fungovali pre všetky dátové štruktúry, čo bolo veľkým problémom. Bolo potrebné spoločné rozhranie, ktoré bude pracovať dôsledne na všetkých dátových štruktúrach a bude tiež efektívne vykonávať operácie.
Neskôr spoločnosť Java prišla s rámcom zbierok, čo je skupina tried a rozhraní pozostávajúca z rôznych operácií, ktoré je možné vykonať s dátovými štruktúrami.
V tomto výučbovom programe zbierok Java sa budeme všeobecne zaoberať rámcom zbierok Java. Každú z komponentov kolekcie preskúmame v našich pripravovaných tutoriáloch.
Rámec zbierok Java
Predtým, ako definujeme rámec Java Collection, pozrime sa na význam kolekcie a rámca.
Kolekciu možno definovať ako skupinu objektov. Zbierka je zvyčajne jedna jednotka pozostávajúca z viac ako jedného objektu. Rámec je softvér, ktorý má pripravené funkčné rozhranie alebo architektúru a tiež obsahuje množinu tried a rozhraní, ktoré sa majú použiť s poskytnutým rozhraním.
Rámec zbierok je definovaný ako jednotná, pripravená architektúra pozostávajúca z nižšie uvedeného.
# 1) Algoritmy
Jedná sa o metódy alebo sadu príkazov, ktoré môžu programátorom pomôcť pri vyhľadávaní, triedení a spracovaní zhromaždených údajov. Kolekcia je dodávaná s rozhraniami, triedami a algoritmami.
Aplikácie, ktoré sa vyvíjajú dedením rámca kolekcie, majú prístup k týmto algoritmom a používajú už definované metódy a postupy.
# 2) Rozhrania
Rozhrania v Jave poskytujú abstrakciu implementácie, tzn. Pomocou rozhraní si používateľ nie je vedomý podrobností implementácie, ale môže vidieť iba metódy a údaje potrebné na napísanie aplikácie. Rozhranie kolekcie má veľa rozhraní, ktoré môže programátor implementovať na písanie vlastných tried.
# 3) Triedy
Triedy Collection Framework sú dátové štruktúry, ktoré je možné implementovať v programe. Tieto triedy implementujú rozhranie „Collection“, a tak dedia všetky metódy a definície rozhrania kolekcie.
Rámec kolekcie sa používa na ukladanie a manipuláciu so kolekciou, ktorá je skupinou objektov.
Rámec kolekcie Java pozostáva z vysoko výkonných algoritmov, ktoré vykonávajú štandardné operácie, ako je vyhľadávanie, triedenie a spracovanie. Poskytuje rôzne štandardné implementácie vrátane LinkedList, TreeSet a HashSet, pre ktoré sú poskytované rozhrania.
Ďalej si pozrime hierarchiu zbierky Java.
Hierarchia zbierok Java
Všetky triedy a rozhrania zobrazené v nasledujúcej hierarchii zbierky Java patria do balíka „java.util. *“.
Ako je znázornené na vyššie uvedenom diagrame, hierarchia zbierky Java sa skladá z rôznych tried a rozhraní. Ako vidíte, každá z tried dedí z rozhrania a všetky triedy a rozhrania zase dedia z jedného rozhrania „kolekcie“.
Poďme si predstaviť niektoré bežné metódy v rozhraní kolekcie spolu so stručným úvodom o každej z tried a rozhraní, ktoré sú uvedené v hierarchii vyššie.
Rozhranie zbierky
Rozhranie kolekcie je koreňovým rozhraním. Všetky triedy v rámci kolekcie implementujú rozhranie kolekcie. To znamená, že každá kolekcia bude mať metódy deklarované v rozhraní kolekcie.
Niektoré z metód rozhrania Collection sú uvedené nižšie.
Nie | Metóda Prototyp | Popis |
---|---|---|
7 | default boolean removeIf (filter predikátov) | Odstráňte zo zbierky všetky prvky, ktoré vyhovujú danému predikátu „filter“. |
1 | public int size () | Vráti počet prvkov v danej kolekcii. |
dva | public void clear () | Vymaže kolekciu odstránením všetkých prvkov z kolekcie. |
3 | verejný booleovský doplnok (E e) | Vloží prvok e do kolekcie. |
4 | public booleanaddAll (zbierka c) | Vložte všetky prvky z kolekcie danej bodom c do kolekcie. |
5 | public boolean remove (prvok objektu) | Odstrániť prvok daný „prvkom“ z kolekcie. |
6 | public boolean removeAll (Collectionc) | Vyberte zbierku c zo zbierky. |
8 | public booleanretainAll (zbierka c) | Odstráňte všetky prvky z kolekcie okrem tých, ktoré sú v uvedenej kolekcii. C. |
9 | verejný iterátor iterátora () | Vráťte iterátor zbierky. |
10 | verejný objekt [] toArray () | Konvertujte kolekciu do poľa. |
jedenásť | verejné T [] toArray (T [] a) | Skonvertujte kolekciu na pole so zadaným návratovým typom. |
12 | public boolean isEmpty () | Vráťte sa, ak je zbierka prázdna alebo nie. |
13 | public boolean obsahuje (element objektu) | Skontrolujte, či kolekcia obsahuje daný prvok (operácia vyhľadávania). |
14 | public booleancontainsAll (Collectionc) | Skontrolujte, či kolekcia obsahuje špecifikovanú kolekciu c. |
pätnásť | predvolený spliterator spliterator () | Vráti rozdeľovač nad zadanú kolekciu. |
16 | public booleanequals (Object element) | Používa sa na priradenie dvoch zbierok. |
17 | predvolený stream paralelný prúd () | Vráti paralelný prúd pomocou kolekcie ako zdroja. |
18 | predvolený stream () | Vráti sekvenčný prúd pomocou kolekcie ako zdroja. |
19 | public int hashCode () | Vráti číselný hash kód kolekcie. |
Iterovateľné rozhranie
Iterovateľné rozhranie je tiež základným rozhraním rámca kolekcie. Rozhranie kolekcie, ktoré je nadradeným rozhraním všetkých ostatných tried, rozširuje iterovateľné rozhranie. Preto všetky triedy implementujú rozhranie zberu, ako aj rozhranie Iterable.
Iterovateľné rozhranie má iba jednu metódu iterátor (), ktorá vracia iterátor (), ktorý môžete použiť na iteráciu nad prvkami typu T.
Iterator iterator ()
Iterátorové rozhranie
Rozhranie Iterator poskytuje schopnosť iterovať nad prvkami vpred.
Nasledujú metódy podporované týmto rozhraním.
Nie | Metóda Prototyp | Popis |
---|---|---|
1 | public Object next () | Najprv vráti prvok a potom presunie kurzor tak, aby ukazoval na nasledujúci prvok. |
dva | public boolean hasNext () | Skontroluje, či má iterátor viac prvkov. |
3 | public void remove () | Odstráni prvok, ktorý nakoniec vráti iterátor. |
Rozhranie zoznamu
Rozhranie zoznamu dedí rozhranie kolekcie. Rozhranie zoznamu obsahuje dátové štruktúry, ktoré sa používajú na ukladanie objednaných údajov alebo zhromažďovanie objektov. Tieto dátové štruktúry majú typ zoznamu. Tieto dátové štruktúry implementujúce rozhranie zoznamu môžu alebo nemusia mať duplicitné hodnoty.
Rozhranie zoznamu obsahuje metódy, ktoré sa používajú na prístup, vloženie alebo odstránenie prvkov z objektov zoznamu.
Rôzne triedy, ktoré implementujú rozhranie Zoznam, sú nasledujúce:
ktorý nástroj etl je najlepší na trhu
- ArrayList
- LinkedList
- Vektor
- Stoh
O každej z týchto tried budeme krátko hovoriť. Naše nasledujúce témy budú mať podrobnú diskusiu o každej z tried rámca zbierky.
# 1) ArrayList
ArrayList je najjednoduchšia implementácia rozhrania Zoznam. ArrayList zachováva poradie vloženia a nie je synchronizovaný.
Všeobecná definícia dátovej štruktúry (kolekcia) ArrayList je nasledovná:
List list1= new ArrayList ();
Po definovaní zoznamu môžete na pridanie prvkov použiť metódu „pridať“. Všimnite si, že ArrayList interne používal mechanizmus dynamického poľa.
Pozrite si nasledujúce príklady, ktoré vytvárajú kolekciu farieb 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()); } } }
Výkon:
Vyššie uvedený program zobrazuje ukážku kolekcie ArrayList. Do kolekcie pridáme farebné hodnoty a potom prechádzame kolekciou, aby sme pomocou iterátora zobrazili jednotlivé hodnoty v kolekcii.
# 2) LinkedList
Kolekcia LinkedList interne využíva na ukladanie prvkov mechanizmus dvojnásobne prepojeného zoznamu. Môže obsahovať duplicitné prvky. Operácie zberu LinkedList sú rýchlejšie, pretože posun prvkov nie je potrebný.
Všeobecná definícia vytvorenia prepojeného zoznamu je nasledovná:
List list2 = new LinkedList ();
Nasledujúci program demonštruje prepojená zoznamová zbierka mien čísel .
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()); } } }
Výkon:
Vytvoríme teda prepojený zoznam a potom doň pridáme prvky pomocou metódy „pridať“. Potom pomocou iterátora prechádzame prepojeným zoznamom a zobrazujeme každý prvok.
# 3) Vektor
Vektor je podobný ArrayList a na ukladanie prvkov ako ArrayList používa dynamické pole. Vektor ale podporuje mnoho nezávislých metód okrem kolekcie, vďaka ktorej je lepšou voľbou byť preferovanou kolekciou.
Všeobecná definícia pre vektorový zber je:
List list3 = new Vector();
Všimnite si, že aj keď vektor a ArrayList používajú rovnaký mechanizmus dynamických polí, vektorové prvky sú synchronizované.
Program Java uvedený nižšie demonštruje použitie vektorov v rámci zhromažďovania .
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()); } } }
Výkon:
V tomto programe sme definovali vektorovú zbierku pozostávajúcu z predmetov. Pridáme rôzne predmety a potom pomocou iterátora vydáme prvky na výstup.
# 4) Zásobník
Stacková dátová štruktúra implementuje spôsob vkladania prvkov typu last-in-first-out (LIFO). Zásobník je podtriedou vektora triedy (pozrite si diagram hierarchie zbierky vyššie). Zásobníková kolekcia podporuje okrem svojich vlastných metód aj metódy vektorového zberu.
Všeobecná definícia zbierky Stack je:
List list4 = new Stack();
Nasledujúci program realizuje Stack collection .
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() + ' '); } } }
Výkon:
Ako vidíte vo vyššie uvedenej implementácii, nové prvky sa do zásobníka pridávajú pomocou 'tam' prevádzka. Zásobník má jeden vstupný bod s názvom „Vrch zásobníka“ a prvky sa tlačia do zásobníka v hornej časti. Posledný pridaný prvok je teda v hornej časti stohu.
Rovnako ako pri pridávaní, aj prvky sa odstraňujú z jedného konca, tj. Hornej časti stohu. Na odstránenie prvkov sa používa operácia „pop“. Ak teda zavoláte pop (), prvok v hornej časti zásobníka bude odstránený.
Vo výstupe vyššie vložíme prvok 2, 4, 6,8,10 a potom zavoláme pop (), takže 10 bude odstránené.
Rozhranie fronty
Zbierky odvodené z rozhrania frontu sa riadia poradím FIFO (first-in-first-out). Prvky sú vložené na jednom konci a sú odstránené z druhého konca. Prvok zadaný ako prvý sa teda stane prvkom, ktorý sa odstráni ako prvý.
Ďalej sú uvedené kolekcie, ktoré podporujú rozhranie dotazu.
- PriorityQueue
- a rozhranie
- ArrayDeque
Poďme si krátko predstaviť každú z nich.
# 1) PriorityQueue
V kolekcii PriorityQueue sa uložené prvky spracúvajú na základe ich priorít. Do prioritného frontu nemôžete ukladať nulové hodnoty.
Všeobecná definícia prioritného frontu je nasledovná:
Queue q1 = new PriorityQueue();
Nasledujúci program implementuje prioritný front.
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() + ' '); } } }
Výkon:
Opäť používame farby ako prvky prioritného frontu. Vo vyššie uvedenom programe sme použili metódy add a remove na pridanie prvkov do frontu a na odstránenie prvku. Použijeme metódu peek (), ktorá vráti prvok, na ktorý ukazuje, v prioritnom rade.
Nakoniec pomocou iterátora sa zobrazia prvky prioritného frontu.
# 2) dotykové rozhranie
Deque alebo „dvojitý front“ je dátová štruktúra, ktorá umožňuje pridávať a odstraňovať prvky z oboch koncov. Deque rozhranie v rámci kolekcie Java, ktoré rozširuje rozhranie Queue.
Poskytuje funkcionalitu deque a dedí z nej triedu „ArrayDeque“.
# 3) ArrayDeque
ArrayDeque implementuje deque rozhranie.
Všeobecná definícia ArrayDeque je nasledovná:
Deque d = new ArrayDeque();
ArrayDeque vám umožňuje používať funkčnosť Deque. Na rozdiel od iných kolekcií ako ArrayList alebo stack nemá ArrayDeque žiadne obmedzenia svojej kapacity.
Nasledujúci príklad ukazuje implementáciu 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); } } }
Výkon:
.torrent súbory ako otvoriť
Vo vyššie uvedenom programe definujeme kolekciu ArrayDeque typu integer a pridáme do nej celočíselné prvky metódou add. Zbierka sa potom prechádza pomocou konštruktu for.
Nastaviť rozhranie
Nastavené rozhranie je súčasťou balíka java.util a siaha od zberného rozhrania. Sada je štruktúra, ktorá neumožňuje, aby kolekcia mala duplicitné hodnoty a tiež viac ako jednu nulovú hodnotu.
Nasledujúce triedy implementujú nastavené rozhranie.
- HashSet
- LinkedHashSet
- TreeSet
# 1) HashSet
Kolekcia HashSet, ktorá implementuje rozhranie Set, má v sebe uložené odlišné hodnoty. Táto kolekcia používa na ukladanie položiek techniku hash a na ukladanie prvkov používa hashovaciu tabuľku.
T Všeobecná definícia kolekcie HashSet je uvedená nižšie.
Set s1 = new HashSet();
Implementáciu HashSet sme uviedli v nasledujúcom programe.
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()); } } }
Výkon:
Vo vyššie uvedenom programe vytvoríme kolekciu predmetov HashSet a potom ju prechádzame pomocou iterátora, aby sme zobrazili prvky v kolekcii.
# 2) LinkedHashSet
LinkedHashSet implementuje nastavené rozhranie a rozširuje HashSet (hierarchia zbierok odkazov). LinkedHashSet je prepojený zoznam reprezentujúci sadu rozhraní. LinkedHashSet obsahuje jedinečné prvky, ale umožňuje nulové hodnoty.
Všeobecná definícia LinkedHashSet je uvedená nižšie.
Set s2 = new LinkedHashSet();
Implementácia LinkedHashSet je uvedená nižšie.
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()); } } }
Výkon:
Na vytvorenie Linkedhashsetu opäť využívame názvy kníh. Ako je zrejmé z výstupu, poradie pridávania udržuje server linkedHashSet.
Rozhranie SortedSet
Rozhranie SortedSet umožňuje úplné zoradenie prvkov. Obsahuje metódy, ktoré poskytujú prirodzené usporiadanie prvkov. Prvky v kolekcii, ktoré implementujú rozhranie SortedSet, sú usporiadané vo vzostupnom poradí.
Trieda TreeSet je jedným z príkladov, ktoré implementujú rozhranie SortedSet.
Strom
Všeobecná definícia stromu je nasledovná:
Set s3 = new TreeSet();
TreeSet implementuje rozhranie SortedSet a obsahuje jedinečné prvky. Ukladanie a načítanie je pomerne rýchle a potom sú prvky zoradené vzostupne.
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() + ' '); } } }
Výkon:
Vo vyššie uvedenom programe sme pomocou metód pridania vytvorili a pridali nepárne čísla do zbierky. Potom pomocou iterátora vygenerujeme prvky v kolekcii.
Výhody rámca zbierok Java
- Znížené programovanie: Rámec Collections je dodávaný so všetkými rozhraniami a triedami obsahujúcimi metódy, ktoré programátorom umožňujú písať efektívny program. Takto sa programátor nemusí sústrediť na príliš veľa programovania.
- Konzistentné metódy a API: Všetky triedy majú spoločné metódy, ktoré pôsobia na dáta. Tieto API sú konzistentné vo všetkých triedach a programátor sa nemusí obávať, že bude mať pre každú triedu príliš veľa rôznych metód.
- Zvýšenie rýchlosti a presnosti: Vysoko efektívne programy môžete písať pomocou rámca zhromažďovania a tiež rýchlejších a presnejších programov, pretože rámec zhromažďovania poskytuje všetky funkcie na implementáciu dátových štruktúr a zbierok.
- Uľahčuje opätovné použitie softvéru: Dátové štruktúry a algoritmy rámca kolekcie Java sú opakovane použiteľné.
- Interoperabilita medzi nesúvisiacimi API: Collection API umožňujú interoperabilitu aj medzi nesúvisiacimi API.
- Menej úsilia pri navrhovaní nových rozhraní API: Programátori môžu používať štandardné API na zhromažďovanie a na základe toho navrhovať nové API. Nemusia sa trápiť s písaním úplne nových rozhraní API.
často kladené otázky
# 1) Aké je použitie rámca zbierky v Jave?
Odpoveď: Rámec kolekcie ponúka vopred zabalené algoritmy, rozhrania a triedy, ktoré programátorom umožňujú písať vysoko efektívne programy, ktoré dokážu ukladať a spracovávať údaje.
# 2) Prečo je kolekcia framework?
Odpoveď: Rámec je opakovane použiteľná zbierka tried, rozhraní a algoritmov. Rámec zberu je tiež opakovane použiteľnou zbierkou tried dátových štruktúr a algoritmov fungujúcich na týchto triedach.
# 3) Čo je rozhranie Java Collections API v prostredí Java?
Odpoveď: Rozhranie API pre kolekcie Java poskytuje rozhrania a triedy, ktoré je možné rozšíriť a implementovať, aby bolo možné používať dátové štruktúry, ktoré nie sú ničím iným ako kolekciami.
# 4) Aký je rozdiel medzi zbierkou a zbierkami v Jave?
Odpoveď: Kolekcia je základným rozhraním v rámci kolekcie, zatiaľ čo kolekcia je trieda. Oba sú súčasťou balíka java.util.
**** Ďalšie podrobnosti a príklady rámca zbierok Java: ****
Porovnanie medzi zoznamom, množinou a radom:
Zoznam | Nastaviť | Fronta |
---|---|---|
Objednávka vloženia je zachovaná | Objednávka vloženia sa v množine hash neuchováva | Objednávka vloženia je zachovaná. |
Môže obsahovať duplicitné prvky | Nemôže obsahovať duplicitné prvky | Môže obsahovať duplicitné prvky. |
Vloženie a vybratie poľa je možné vykonať pre akýkoľvek index. | Odstráňte zadaný prvok. | Vyskakovať sa dá iba posledný vložený prvok. Na konci sa tiež vkladajú prvky. |
Trieda zoznamu polí
V poli je alokácia pamäte pevná. Ale v ArrayList možno pamäť prideliť dynamicky. Táto trieda ArrayList zachováva poradie vloženia a môžete vložiť duplicitné prvky.
Demo program pre zoznam polí:
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)); } }
Trieda LinkedList
Dátová štruktúra prepojeného zoznamu obsahuje uzly a tento uzol bude obsahovať dve časti:
- Údaje
- Odkaz na nasledujúci prvok
Prvý uzol nie je samostatný uzol. Obsahuje iba odkaz a nazýva sa hlava. Posledný uzol je prázdny.
Demo program:
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 
Fronta
Fronta obsahuje dátovú štruktúru FIFO. Ak zavoláte metódu remove, z fronty sa odstráni vždy prvý vložený prvok. Fronta sa teda používa v aplikáciách v reálnom čase, kde sa údaje musia načítať v poradí, v akom sú vložené.
Príklad programu:
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); } }

Nastaviť
Sada kolekcií neumožňuje duplicitné prvky. Nastavenú dátovú štruktúru môžete použiť, keď chcete spracovať zber údajov bez duplikácie a keď nie je potrebné udržiavať poradie vloženia.
Demo program:
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)); ; } }

Rozhranie MAP
- Ak chcete zbierať prvky pomocou páru kľúčov a hodnôt, môžete použiť štruktúru dát mapy, pretože mapa je objektom, ktorý dokáže mapovať kľúče na hodnoty.
- Mapa nemôže obsahovať duplicitné kľúče.
- Dôležitými implementáciami mapy sú HashMap, Treemap, LinkedHashMap, HashTable.
Rozdiel medzi programami HashMap, Treemap, LinkedHashMap a HashTable:
HashMap TreeMap LinkedHashmap HashTable Nulové kľúče a hodnoty sú povolené Povolené sú iba nulové hodnoty. Nulové kľúče a hodnoty sú povolené. Nepovolí nulové kľúče a hodnoty. Nesynchronizované Nesynchronizované Nesynchronizované synchronizované Neexistuje žiadna záruka udržiavania poriadku v iterácii Triedenie sa uskutoční na základe prirodzeného poriadku. Objednávka vloženia sa zachová Objednávka vloženia sa neudržala.
Demo program:
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); } }

Kľúčové body, ktoré je potrebné poznamenať:
- Rozhrania zoznamu, frontu, set rozširujú rozhranie kolekcie a toto rozhranie kolekcie má bežné metódy ako pridávanie, odstraňovanie atď.
- Poradie vloženia sa udržuje v zozname a sada nemôže obsahovať duplicitné prvky. Fronta je dátová štruktúra typu Prvý dovnútra.
- Mapa bude obsahovať páry kľúčov a hodnôt. HashMap, Treemap, Hashtable, Linked HashMap sú dôležitou implementáciou mapového rozhrania.
Záver
V tomto výučbe sme sa oboznámili s rámcom zbierok Java. Krátko sme sa dotkli všetkých tried a rozhraní, ktoré sú súčasťou rámca kolekcie Java.
V našich ďalších tutoriáloch v tejto sérii sa podrobne naučíme každú z týchto tried a rozhraní.
Viac o Reflections v JAVE si môžete pozrieť v našom pripravovanom výučbe !!!
Výukový program PREV | NEXT Tutorial
Odporúčané čítanie
- Výukový program Java Reflection s príkladmi
- Hĺbkové návody pre zatmenie pre začiatočníkov
- Výukový program Java SWING: Kontajnery, komponenty a spracovanie udalostí
- Výukový program JAVA pre začiatočníkov: viac ako 100 praktických výučbových programov Java Video
- Modifikátory prístupu v prostredí Java - návod s príkladmi
- Výukový program Java String s programom String Buffer a String Builder
- Úvod do programovacieho jazyka Java - videonávod
- Výukový program Cucumber Selenium: Cucumber Java Selenium WebDriver Integration