- Java Collection Framework
- Gyűjteményi keretrendszer hierarchiája
- Gyűjtemény felület
- Iterátor interfész
A Gyűjtemény Java nyelven egy olyan keretrendszer, amely architektúrát biztosít az objektumok csoportjának tárolására és manipulálására.
A Java-gyűjtemények minden olyan műveletet végrehajthatnak, amelyet az adatokon végez, például keresést, rendezést, beszúrást, manipulációt és törlést.
A Java Collection az objektumok egyetlen egységét jelenti. A Java Collection keretrendszer számos interfészt (Set, List, Queue, Deque) és osztályt ( Tömb lista , vektor, LinkedList , PriorityQueue , HashSet, LinkedHashSet, TreeSet).
Mi a Gyűjtemény a Java nyelven
A gyűjtemény az objektumok egyetlen egységét, azaz egy csoportot képvisel.
Mi az a keretrendszer a Java-ban
- Kész architektúrát biztosít.
- Osztályok és interfészek halmazát képviseli.
- Ez nem kötelező.
Mi az a Gyűjtemény keretrendszer
A Gyűjtemény keretrendszer egy egységes architektúrát képvisel egy objektumcsoport tárolására és kezelésére. A következőket tartalmazza:
- Interfészek és megvalósításai, azaz osztályok
- Algoritmus
Tudod?
- Mi a két módja a gyűjtemény elemeinek ismétlésének?
- Mi a különbség az ArrayList és a LinkedList osztályok között a gyűjtési keretrendszerben?
- Mi a különbség az ArrayList és a Vector osztályok között a gyűjteményi keretrendszerben?
- Mi a különbség a HashSet és a HashMap osztályok között a gyűjtési keretrendszerben?
- Mi a különbség a HashMap és a Hashtable osztály között?
- Mi a különbség az Iterator és az Enumeration interfész között a gyűjteményi keretrendszerben?
- Hogyan rendezhetjük egy objektum elemeit? Mi a különbség a Comparable és a Comparator interfészek között?
- Mit jelent a hashcode() metódus?
- Mi a különbség a Java gyűjtemény és a Java gyűjtemény között?
Gyűjteményi keretrendszer hierarchiája
Lássuk a Gyűjtemény keretrendszer hierarchiáját. A java.util csomag tartalmazza az összes osztályok és interfészek a Gyűjtemény kerethez.
A gyűjtési felület módszerei
A Gyűjtemény felületén számos módszer van deklarálva. Ezek a következők:
Nem. | Módszer | Leírás |
---|---|---|
1 | nyilvános logikai hozzáadás(E e) | Egy elem beszúrására szolgál ebbe a gyűjteménybe. |
2 | public logikai addAll(c gyűjtemény) | A megadott gyűjteményelemek beszúrására szolgál a meghívó gyűjteménybe. |
3 | nyilvános logikai eltávolítás (objektum elem) | Egy elem törlésére szolgál a gyűjteményből. |
4 | publikus logikai eltávolítása(c gyűjtemény) | A megadott gyűjtemény összes elemének törlésére szolgál a meghívó gyűjteményből. |
5 | alapértelmezett logikai removeIf (predikátumszűrő) | A gyűjtemény minden olyan elemének törlésére szolgál, amely megfelel a megadott predikátumnak. |
6 | nyilvános logikai érték megtartja az összeset (c gyűjtemény) | A megadott gyűjtemény kivételével a meghívó gyűjtemény összes elemének törlésére szolgál. |
7 | publikus int méret() | A gyűjtemény elemeinek teljes számát adja vissza. |
8 | public void clear() | Eltávolítja az elemek teljes számát a gyűjteményből. |
9 | publikus logikai érték tartalmazza (Object elem) | Egy elem keresésére szolgál. |
10 | nyilvános logikai érték tartalmazza az összeset (c gyűjtemény) | A megadott gyűjtemény keresésére szolgál a gyűjteményben. |
tizenegy | public Iterator iterator() | Egy iterátort ad vissza. |
12 | nyilvános objektum[] toArray() | A gyűjteményt tömbbé alakítja. |
13 | public T[] toArray(T[] a) | A gyűjteményt tömbbé alakítja. Itt a visszaadott tömb futásidejű típusa a megadott tömb futásidejű típusa. |
14 | nyilvános logikai érték isEmpty() | Ellenőrzi, hogy a gyűjtemény üres-e. |
tizenöt | alapértelmezett Stream parallelStream() | Egy esetlegesen párhuzamos Streamot ad vissza, forrásként a gyűjteményt. |
16 | alapértelmezett Stream stream() | Egy szekvenciális adatfolyamot ad vissza, amelynek forrása a gyűjtemény. |
17 | alapértelmezett Spliterator spliterator() | Elosztót hoz létre a gyűjtemény megadott elemei felett. |
18 | publikus logikai egyenlő (Object elem) | Két kollekcióhoz illik. |
19 | public int hashCode() | A gyűjtemény hash kódszámát adja vissza. |
Iterátor interfész
Az iterátor interfész lehetőséget biztosít az elemek csak előrefelé történő iterálására. |
Az Iterator interfész módszerei
Az Iterator felületén csak három módszer található. Ők:
Nem. | Módszer | Leírás |
---|---|---|
1 | publikus logikai hasNext() | Igazat ad vissza, ha az iterátornak több eleme van, ellenkező esetben hamis értéket ad vissza. |
2 | public Object next() | Visszaadja az elemet, és a kurzormutatót a következő elemre mozgatja. |
3 | public void eltávolítás() | Eltávolítja az iterátor által visszaadott utolsó elemeket. Kevésbé használt. |
Iterálható felület
Az Iterable felület az összes gyűjteményosztály gyökérfelülete. A Gyűjtemény interfész kiterjeszti az Iterable felületet, ezért a Gyűjtemény felület összes alosztálya megvalósítja az Iterable felületet is.
Csak egy absztrakt módszert tartalmaz. azaz.,
Iterator iterator()
Visszaadja az iterátort a T típusú elemek felett.
js letöltése
Gyűjtemény interfész
A Gyűjtemény felület az a felület, amelyet a gyűjteményi keretrendszer összes osztálya megvalósít. Ez deklarálja azokat a módszereket, amelyek minden gyűjteményben megtalálhatók lesznek. Más szóval azt mondhatjuk, hogy a Gyűjtemény felülete építi azt az alapot, amelyen a gyűjtési keretrendszer függ.
A Gyűjtemény interfész néhány metódusa a logikai add (Object obj), Boolean addAll (c gyűjtemény), void clear() stb., amelyeket a Gyűjtemény felület összes alosztálya megvalósít.
Lista interfész
A Lista felület a Gyűjtemény felület gyermekfelülete. Gátolja a lista típusú adatstruktúrát, amelyben tárolhatjuk az objektumok rendezett gyűjteményét. Duplikált értékei lehetnek.
A lista interfészt az ArrayList, LinkedList, Vector és Stack osztályok valósítják meg.
A Lista felület példányosításához a következőket kell használnunk:
List list1= new ArrayList(); List list2 = new LinkedList(); List list3 = new Vector(); List list4 = new Stack();
A Lista felületen különféle módszerek állnak rendelkezésre, amelyek segítségével beszúrhatók, törölhetők és elérhetők a listából az elemek.
A Lista felületet megvalósító osztályok az alábbiakban láthatók.
Tömb lista
Az ArrayList osztály a List interfészt valósítja meg. Dinamikus tömböt használ a különböző adattípusok ismétlődő elemeinek tárolására. Az ArrayList osztály fenntartja a beillesztési sorrendet, és nincs szinkronizálva. Az ArrayList osztályban tárolt elemek véletlenszerűen elérhetők. Tekintsük a következő példát.
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()); } } }
Kimenet:
Ravi Vijay Ravi Ajay
LinkedList
A LinkedList megvalósítja a Gyűjtemény felületet. Az elemek belső tárolására duplán linkelt listát használ. Tárolhatja az ismétlődő elemeket. Megtartja a beillesztési sorrendet, és nincs szinkronizálva. A LinkedListben a manipuláció gyors, mivel nincs szükség eltolásra.
Tekintsük a következő példát.
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()); } } }
Kimenet:
Ravi Vijay Ravi Ajay
Vektor
A Vector dinamikus tömböt használ az adatelemek tárolására. Hasonló az ArrayList-hez. Ez azonban szinkronizált, és sok olyan módszert tartalmaz, amelyek nem részei a Collection keretrendszernek.
Tekintsük a következő példát.
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()); } } }
Kimenet:
Ayush Amit Ashish Garima
Kazal
A verem a Vector alosztálya. Az utolsó az elsőben adatszerkezetet, azaz a Stack-et valósítja meg. A verem tartalmazza a Vector osztály összes metódusát és olyan metódusait is, mint a logikai push(), boolean peek(), logikai push(object o), amely meghatározza a tulajdonságait.
Tekintsük a következő példát.
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()); } } }
Kimenet:
Ayush Garvit Amit Ashish
Sor interfész
A sor interfész fenntartja az első az elsőben sorrendet. Meghatározható egy rendezett listaként, amely a feldolgozás előtt álló elemek tárolására szolgál. Különféle osztályok léteznek, mint például a PriorityQueue, Deque és ArrayDeque, amelyek megvalósítják a Queue interfészt.
A sor interfész a következőképpen példányosítható:
Queue q1 = new PriorityQueue(); Queue q2 = new ArrayDeque();
Különféle osztályok valósítják meg a Queue felületet, ezek közül néhányat az alábbiakban mutatunk be.
PriorityQueue
A PriorityQueue osztály a Queue interfészt valósítja meg. Tartalmazza azokat az elemeket vagy objektumokat, amelyeket prioritásaik szerint kell feldolgozni. A PriorityQueue nem teszi lehetővé null értékek tárolását a sorban.
Tekintsük a következő példát.
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()); } } }
Kimenet:
head:Amit Sharma head:Amit Sharma iterating the queue elements: Amit Sharma Raj JaiShankar Vijay Raj after removing two elements: Raj Vijay Raj
És a felület
Deque interfész kiterjeszti a Queue felületet. A Deque-ben mindkét oldalról eltávolíthatjuk és hozzáadhatjuk az elemeket. A Deque egy kétvégű várólista, amely lehetővé teszi a műveletek mindkét végén történő végrehajtását.
A deque a következőképpen példányosítható:
Deque d = new ArrayDeque();
ArrayDeque
Az ArrayDeque osztály a Deque interfészt valósítja meg. Ez megkönnyíti a Deque használatát. A queue-tól eltérően mindkét végén felvehetjük vagy törölhetjük az elemeket.
Az ArrayDeque gyorsabb, mint az ArrayList és a Stack, és nincsenek kapacitáskorlátozásai.
Tekintsük a következő példát.
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); } } }
Kimenet:
Gautam Karan Ajay
Interfész beállítása
A Set Interface in Java megtalálható a java.util csomagban. Kibővíti a Gyűjtemény felületét. Az elemek rendezetlen halmazát képviseli, amely nem teszi lehetővé az ismétlődő elemek tárolását. A Setben legfeljebb egy null értéket tárolhatunk. A készletet a HashSet, a LinkedHashSet és a TreeSet valósítja meg.
A készlet a következőképpen példányosítható:
Set s1 = new HashSet(); Set s2 = new LinkedHashSet(); Set s3 = new TreeSet();
HashSet
A HashSet osztály a Set Interface-t valósítja meg. Azt a gyűjteményt képviseli, amely hash táblát használ a tároláshoz. A kivonatolás az elemek tárolására szolgál a HashSetben. Egyedi elemeket tartalmaz.
Tekintsük a következő példát.
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()); } } }
Kimenet:
Vijay Ravi Ajay
LinkedHashSet
A LinkedHashSet osztály a Set Interface LinkedList megvalósítását képviseli. Kibővíti a HashSet osztályt és megvalósítja a Set interfészt. A HashSethez hasonlóan egyedi elemeket is tartalmaz. Fenntartja a beillesztési sorrendet, és engedélyezi a null elemeket.
Tekintsük a következő példát.
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()); } } }
Kimenet:
Ravi Vijay Ajay
SortedSet interfész
A SortedSet a Set interfész alternatívája, amely teljes sorrendet biztosít az elemeken. A SortedSet elemei növekvő (növekvő) sorrendbe vannak rendezve. A SortedSet további módszereket biztosít, amelyek gátolják az elemek természetes sorrendjét.
A SortedSet a következőképpen példányosítható:
SortedSet set = new TreeSet();
TreeSet
A Java TreeSet osztály a Set felületet valósítja meg, amely fát használ a tároláshoz. A HashSethez hasonlóan a TreeSet is egyedi elemeket tartalmaz. A TreeSet elérési és visszakeresési ideje azonban meglehetősen gyors. A TreeSet elemei növekvő sorrendben tárolva.
Tekintsük a következő példát:
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()); } } }
Kimenet:
Ajay Ravi VijayMit fogunk megtanulni a Java Collections Frameworkben
- ArrayList osztály
- LinkedList osztály
- Lista felület
- HashSet osztály
- LinkedHashSet osztály
- TreeSet osztály
- PriorityQueue osztály
- Térképes felület
- HashMap osztály
- LinkedHashMap osztály
- TreeMap osztály
- Hashtable osztály
- Válogatás
- Összehasonlítható felület
- Összehasonlító felület
- Properties osztály Java nyelven