The Zbierka v Jave je rámec, ktorý poskytuje architektúru na ukladanie a manipuláciu so skupinou objektov.
Kolekcie Java môžu vykonávať všetky operácie, ktoré vykonávate s údajmi, ako je vyhľadávanie, triedenie, vkladanie, manipulácia a mazanie.
Java Collection znamená jednu jednotku objektov. Framework Java Collection poskytuje mnoho rozhraní (Set, List, Queue, Deque) a tried ( ArrayList , Vektor, LinkedList , PriorityQueue , HashSet, LinkedHashSet, TreeSet).
Čo je kolekcia v jazyku Java
Zbierka predstavuje jednu jednotku objektov, t.j. skupinu.
Čo je to framework v Jave
- Poskytuje hotovú architektúru.
- Predstavuje súbor tried a rozhraní.
- Je to voliteľné.
Čo je kolekcia framework
Framework Collection predstavuje jednotnú architektúru na ukladanie a manipuláciu so skupinou objektov. Má:
- Rozhrania a jeho implementácie, t.j. triedy
- Algoritmus
Vieš?
- Aké sú dva spôsoby iterácie prvkov kolekcie?
- Aký je rozdiel medzi triedami ArrayList a LinkedList v rámci kolekcie?
- Aký je rozdiel medzi triedami ArrayList a Vector v rámci kolekcie?
- Aký je rozdiel medzi triedami HashSet a HashMap v rámci kolekcie?
- Aký je rozdiel medzi triedou HashMap a Hashtable?
- Aký je rozdiel medzi rozhraním Iterator a Enumeration v rámci kolekcie?
- Ako môžeme triediť prvky objektu? Aký je rozdiel medzi porovnateľným a porovnávacím rozhraním?
- Čo znamená metóda hashcode()?
- Aký je rozdiel medzi kolekciou Java a kolekciami Java?
Hierarchy of Collection Framework
Pozrime sa na hierarchiu rámca kolekcie. The java.util balenie obsahuje všetko triedy a rozhrania pre rámec kolekcie.
Metódy zberného rozhrania
Existuje mnoho metód deklarovaných v rozhraní kolekcie. Sú nasledovné:
Nie | Metóda | Popis |
---|---|---|
1 | verejné boolovské pridanie (E e) | Používa sa na vloženie prvku do tejto kolekcie. |
2 | public boolean addAll(kolekcia c) | Používa sa na vloženie špecifikovaných prvkov kolekcie do vyvolávanej kolekcie. |
3 | verejné boolovské odstránenie (prvok Object) | Používa sa na odstránenie prvku z kolekcie. |
4 | public boolean removeAll(kolekcia c) | Používa sa na vymazanie všetkých prvkov zadanej kolekcie z vyvolávajúcej kolekcie. |
5 | predvolená boolovská hodnota removeIf (predikátový filter) | Používa sa na vymazanie všetkých prvkov kolekcie, ktoré spĺňajú zadaný predikát. |
6 | public boolean keepAll(kolekcia c) | Používa sa na vymazanie všetkých prvkov vyvolávajúcej kolekcie okrem zadanej kolekcie. |
7 | public int size() | Vráti celkový počet prvkov v kolekcii. |
8 | public void clear() | Odstráni celkový počet prvkov z kolekcie. |
9 | public boolean obsahuje(prvok Object) | Používa sa na vyhľadávanie prvku. |
10 | public boolean obsahuje všetko (kolekcia c) | Používa sa na vyhľadávanie zadanej kolekcie v kolekcii. |
jedenásť | public Iterator iterator() | Vracia iterátor. |
12 | public Object[] toArray() | Prevádza kolekciu na pole. |
13 | verejné T[] toArray(T[] a) | Prevádza kolekciu na pole. Tu je typ runtime vráteného poľa typ zadaného poľa. |
14 | public boolean isEmpty() | Kontroluje, či je zbierka prázdna. |
pätnásť | predvolený stream ParalelStream() | Vracia možno paralelný prúd s kolekciou ako zdrojom. |
16 | predvolený stream stream() | Vracia sekvenčný prúd s kolekciou ako zdrojom. |
17 | predvolený spliterator spliterator() | Vygeneruje Spliterator nad špecifikovanými prvkami v kolekcii. |
18 | verejný boolovský rovná sa (prvok objektu) | Zodpovedá dvom kolekciám. |
19 | public int hashCode() | Vráti číslo hash kódu kolekcie. |
Rozhranie iterátora
Rozhranie iterátora poskytuje možnosť iterácie prvkov iba smerom dopredu. |
Metódy rozhrania Iterator
V rozhraní Iterator sú len tri metódy. Oni sú:
Nie | Metóda | Popis |
---|---|---|
1 | public boolean hasNext() | Ak má iterátor viac prvkov, vráti hodnotu true, inak vráti hodnotu false. |
2 | public Object next() | Vráti prvok a presunie kurzor kurzora na ďalší prvok. |
3 | public void remove() | Odstráni posledné prvky vrátené iterátorom. Používa sa menej. |
Iterovateľné rozhranie
Rozhranie Iterable je koreňové rozhranie pre všetky triedy kolekcií. Rozhranie Collection rozširuje rozhranie Iterable, a preto všetky podtriedy rozhrania Collection tiež implementujú rozhranie Iterable.
Obsahuje iba jednu abstraktnú metódu. t.j.
Iterator iterator()
Vracia iterátor nad prvkami typu T.
abstraktná trieda v jazyku Java
Rozhranie kolekcie
Rozhranie kolekcie je rozhranie, ktoré implementujú všetky triedy v rámci kolekcie. Deklaruje metódy, ktoré bude mať každá kolekcia. Inými slovami, môžeme povedať, že rozhranie kolekcie stavia základ, na ktorom závisí rámec kolekcie.
Niektoré z metód rozhrania Collection sú Boolean add ( Object obj), Boolean addAll ( Collection c), void clear () atď., ktoré sú implementované všetkými podtriedami rozhrania Collection.
Rozhranie zoznamu
Rozhranie zoznamu je potomkom rozhrania kolekcie. Blokuje dátovú štruktúru typu zoznam, do ktorej môžeme uložiť usporiadanú kolekciu objektov. Môže mať duplicitné hodnoty.
Rozhranie zoznamu je implementované triedami ArrayList, LinkedList, Vector a Stack.
Na vytvorenie inštancie rozhrania zoznamu musíme použiť:
List list1= new ArrayList(); List list2 = new LinkedList(); List list3 = new Vector(); List list4 = new Stack();
V rozhraní zoznamu sú rôzne metódy, ktoré možno použiť na vkladanie, mazanie a prístup k prvkom zo zoznamu.
Triedy, ktoré implementujú rozhranie List, sú uvedené nižšie.
ArrayList
Trieda ArrayList implementuje rozhranie List. Používa dynamické pole na ukladanie duplicitných prvkov rôznych typov údajov. Trieda ArrayList zachováva poradie vkladania a nie je synchronizovaná. K prvkom uloženým v triede ArrayList je možné pristupovať náhodne. Zvážte nasledujúci príklad.
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()); } } }
Výkon:
Ravi Vijay Ravi Ajay
LinkedList
LinkedList implementuje rozhranie kolekcie. Na ukladanie prvkov používa interne dvojito prepojený zoznam. Môže ukladať duplicitné prvky. Zachováva poradie vloženia a nie je synchronizovaná. V LinkedList je manipulácia rýchla, pretože nie je potrebné žiadne posúvanie.
Zvážte nasledujúci príklad.
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()); } } }
Výkon:
Ravi Vijay Ravi Ajay
Vektor
Vector používa dynamické pole na ukladanie dátových prvkov. Je to podobné ako ArrayList. Je však synchronizovaný a obsahuje mnoho metód, ktoré nie sú súčasťou kolekcie.
Zvážte nasledujúci príklad.
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()); } } }
Výkon:
Ayush Amit Ashish Garima
Stoh
Zásobník je podtriedou Vector. Implementuje dátovú štruktúru last-in-first-out, t.j. zásobník. Zásobník obsahuje všetky metódy triedy Vector a poskytuje aj jej metódy ako boolean push(), boolean peek(), boolean push(object o), ktoré definujú jej vlastnosti.
Zvážte nasledujúci príklad.
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()); } } }
Výkon:
Ayush Garvit Amit Ashish
Rozhranie fronty
Rozhranie frontu udržiava poradie „prvý dnu, prvý von“. Môže byť definovaný ako usporiadaný zoznam, ktorý sa používa na uchovávanie prvkov, ktoré sa majú spracovať. Existujú rôzne triedy ako PriorityQueue, Deque a ArrayDeque, ktoré implementujú rozhranie Queue.
Rozhranie fronty môže byť vytvorené ako:
Queue q1 = new PriorityQueue(); Queue q2 = new ArrayDeque();
Existujú rôzne triedy, ktoré implementujú rozhranie Queue, niektoré z nich sú uvedené nižšie.
PriorityQueue
Trieda PriorityQueue implementuje rozhranie Queue. Obsahuje prvky alebo objekty, ktoré sa majú spracovať podľa ich priorít. PriorityQueue neumožňuje ukladanie hodnôt null do frontu.
Zvážte nasledujúci príklad.
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()); } } }
Výkon:
head:Amit Sharma head:Amit Sharma iterating the queue elements: Amit Sharma Raj JaiShankar Vijay Raj after removing two elements: Raj Vijay Raj
A rozhranie
Rozhranie Deque rozširuje rozhranie Queue. V Deque môžeme odstrániť a pridať prvky z oboch strán. Deque znamená obojstranný front, ktorý nám umožňuje vykonávať operácie na oboch koncoch.
Deque je možné vytvoriť ako:
Deque d = new ArrayDeque();
ArrayDeque
Trieda ArrayDeque implementuje rozhranie Deque. Uľahčuje nám to používanie Deque. Na rozdiel od fronty môžeme pridávať alebo odstraňovať prvky z oboch koncov.
ArrayDeque je rýchlejší ako ArrayList a Stack a nemá žiadne obmedzenia kapacity.
Zvážte nasledujúci príklad.
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); } } }
Výkon:
Gautam Karan Ajay
Nastaviť rozhranie
Set Interface v jazyku Java je prítomný v balíku java.util. Rozširuje rozhranie kolekcie. Predstavuje neusporiadanú množinu prvkov, ktorá nám neumožňuje ukladať duplicitné položky. V množine môžeme uložiť najviac jednu nulovú hodnotu. Sada je implementovaná pomocou HashSet, LinkedHashSet a TreeSet.
Set je možné vytvoriť ako:
Set s1 = new HashSet(); Set s2 = new LinkedHashSet(); Set s3 = new TreeSet();
HashSet
Trieda HashSet implementuje rozhranie Set Interface. Predstavuje kolekciu, ktorá používa na ukladanie hašovaciu tabuľku. Hašovanie sa používa na ukladanie prvkov do HashSet. Obsahuje unikátne položky.
Zvážte nasledujúci príklad.
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()); } } }
Výkon:
Vijay Ravi Ajay
LinkedHashSet
Trieda LinkedHashSet predstavuje implementáciu LinkedList rozhrania Set Interface. Rozširuje triedu HashSet a implementuje rozhranie Set. Rovnako ako HashSet obsahuje aj jedinečné prvky. Zachováva poradie vloženia a povoľuje nulové prvky.
Zvážte nasledujúci príklad.
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()); } } }
Výkon:
Ravi Vijay Ajay
Rozhranie SortedSet
SortedSet je alternatívou rozhrania Set, ktoré poskytuje celkové usporiadanie svojich prvkov. Prvky SortedSet sú usporiadané vo vzostupnom (vzostupnom) poradí. SortedSet poskytuje ďalšie metódy, ktoré inhibujú prirodzené usporiadanie prvkov.
SortedSet možno vytvoriť ako:
SortedSet set = new TreeSet();
TreeSet
Trieda Java TreeSet implementuje rozhranie Set, ktoré používa strom na ukladanie. Rovnako ako HashSet, aj TreeSet obsahuje jedinečné prvky. Čas prístupu a načítania TreeSet je však pomerne rýchly. Prvky v TreeSet uložené vo vzostupnom poradí.
Zvážte nasledujúci príklad:
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()); } } }
Výkon:
Ajay Ravi VijayČo sa naučíme v Java Collections Framework
- Trieda ArrayList
- Trieda LinkedList
- Rozhranie zoznamu
- Trieda HashSet
- Trieda LinkedHashSet
- Trieda TreeSet
- Trieda PriorityQueue
- Mapové rozhranie
- Trieda HashMap
- Trieda LinkedHashMap
- Trieda TreeMap
- Hashtable trieda
- Triedenie
- Porovnateľné rozhranie
- Rozhranie komparátora
- Trieda vlastností v jazyku Java