The Sbírka v Javě je rámec, který poskytuje architekturu pro ukládání a manipulaci se skupinou objektů.
Kolekce Java mohou provádět všechny operace, které s daty provádíte, jako je vyhledávání, řazení, vkládání, manipulace a mazání.
Java Collection znamená jednu jednotku objektů. Framework Java Collection poskytuje mnoho rozhraní (Set, List, Queue, Deque) a tříd ( ArrayList , Vektor, Spojový seznam , PriorityQueue , HashSet, LinkedHashSet, TreeSet).
Co je kolekce v Javě
Kolekce představuje jednu jednotku objektů, tj. skupinu.
Co je to framework v Javě
- Poskytuje hotovou architekturu.
- Představuje sadu tříd a rozhraní.
- Je to nepovinné.
Co je to Collection framework
Framework Collection představuje jednotnou architekturu pro ukládání a manipulaci se skupinou objektů. Má to:
- Rozhraní a jeho implementace, tj. třídy
- Algoritmus
Víš?
- Jaké jsou dva způsoby iterace prvků kolekce?
- Jaký je rozdíl mezi třídami ArrayList a LinkedList v rámci kolekce?
- Jaký je rozdíl mezi třídami ArrayList a Vector v rámci kolekce?
- Jaký je rozdíl mezi třídami HashSet a HashMap v rámci kolekce?
- Jaký je rozdíl mezi třídou HashMap a Hashtable?
- Jaký je rozdíl mezi rozhraním Iterator a Enumeration v rámci kolekce?
- Jak můžeme třídit prvky objektu? Jaký je rozdíl mezi rozhraním Comparable a Comparator?
- Co znamená metoda hashcode()?
- Jaký je rozdíl mezi kolekcí Java a kolekcí Java?
Hierarchie Collection Framework
Podívejme se na hierarchii rámce Collection. The java.util balení obsahuje vše třídy a rozhraní pro rámec kolekce.
Metody sběrného rozhraní
Existuje mnoho metod deklarovaných v rozhraní kolekce. Jsou následující:
Ne. | Metoda | Popis |
---|---|---|
1 | public boolean add(E e) | Slouží k vložení prvku do této kolekce. |
2 | public boolean addAll(kolekce c) | Používá se k vložení zadaných prvků kolekce do vyvolávající kolekce. |
3 | public boolean remove(element Object) | Používá se k odstranění prvku z kolekce. |
4 | public boolean removeAll(kolekce c) | Používá se k odstranění všech prvků zadané kolekce z vyvolávající kolekce. |
5 | výchozí logická hodnota removeIf (predikátový filtr) | Používá se k odstranění všech prvků kolekce, které splňují zadaný predikát. |
6 | public boolean keepAll(kolekce c) | Používá se k odstranění všech prvků vyvolávající kolekce kromě zadané kolekce. |
7 | public int size() | Vrátí celkový počet prvků v kolekci. |
8 | public void clear() | Odebere celkový počet prvků z kolekce. |
9 | public boolean obsahuje(prvek Object) | Používá se k vyhledávání prvku. |
10 | public boolean obsahuje vše (kolekce c) | Slouží k vyhledávání zadané kolekce v kolekci. |
jedenáct | public Iterator iterator() | Vrací iterátor. |
12 | public Object[] toArray() | Převádí kolekci na pole. |
13 | public T[] toArray(T[] a) | Převádí kolekci na pole. Zde je typem runtime vráceného pole typ zadaného pole. |
14 | public boolean isEmpty() | Kontroluje, zda je sbírka prázdná. |
patnáct | výchozí Stream parallelStream() | Vrací možná paralelní proud s kolekcí jako jejím zdrojem. |
16 | výchozí stream stream() | Vrátí sekvenční Stream s kolekcí jako zdrojem. |
17 | výchozí Spliterator spliterator() | Vygeneruje Spliterator nad určenými prvky v kolekci. |
18 | veřejné booleovské rovná se (prvek Object) | Odpovídá dvěma kolekcím. |
19 | public int hashCode() | Vrací číslo hash kódu kolekce. |
Rozhraní iterátoru
Rozhraní iterátoru poskytuje možnost iterace prvků pouze v dopředném směru. |
Metody rozhraní Iterator
V rozhraní Iterátoru jsou pouze tři metody. Oni jsou:
Ne. | Metoda | Popis |
---|---|---|
1 | public boolean hasNext() | Vrací true, pokud má iterátor více prvků, jinak vrací false. |
2 | public Object next() | Vrátí prvek a přesune ukazatel kurzoru na další prvek. |
3 | public void remove() | Odstraní poslední prvky vrácené iterátorem. Je méně používaný. |
Iterovatelné rozhraní
Rozhraní Iterable je kořenovým rozhraním pro všechny třídy kolekce. Rozhraní Collection rozšiřuje rozhraní Iterable, a proto všechny podtřídy rozhraní Collection také implementují rozhraní Iterable.
Obsahuje pouze jednu abstraktní metodu. tj.,
Iterator iterator()
Vrací iterátor nad prvky typu T.
funkce v c
Rozhraní kolekce
Rozhraní kolekce je rozhraní, které je implementováno všemi třídami v rámci kolekce. Deklaruje metody, které bude mít každá kolekce. Jinými slovy, můžeme říci, že rozhraní kolekce staví základ, na kterém závisí rámec kolekce.
Některé z metod rozhraní Collection jsou Boolean add ( Object obj), Boolean addAll ( Collection c), void clear() atd., které jsou implementovány všemi podtřídami rozhraní Collection.
Rozhraní seznamu
Rozhraní seznamu je podřízené rozhraní rozhraní kolekce. Zabraňuje datové struktuře typu seznamu, do které můžeme uložit uspořádanou kolekci objektů. Může mít duplicitní hodnoty.
Rozhraní seznamu je implementováno třídami ArrayList, LinkedList, Vector a Stack.
K vytvoření instance rozhraní Seznam musíme použít:
List list1= new ArrayList(); List list2 = new LinkedList(); List list3 = new Vector(); List list4 = new Stack();
V rozhraní seznamu existují různé metody, které lze použít k vložení, odstranění a přístupu k prvkům ze seznamu.
Třídy, které implementují rozhraní Seznam, jsou uvedeny níže.
ArrayList
Třída ArrayList implementuje rozhraní List. K ukládání duplicitních prvků různých datových typů používá dynamické pole. Třída ArrayList udržuje pořadí vložení a není synchronizována. K prvkům uloženým ve třídě ArrayList lze přistupovat náhodně. Zvažte následující pří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ýstup:
Ravi Vijay Ravi Ajay
Spojový seznam
LinkedList implementuje rozhraní kolekce. K ukládání prvků používá interně dvojitě propojený seznam. Může ukládat duplicitní prvky. Udržuje pořadí vložení a není synchronizováno. V LinkedList je manipulace rychlá, protože není potřeba žádné posouvání.
Zvažte následující pří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ýstup:
Ravi Vijay Ravi Ajay
Vektor
Vector používá k ukládání datových prvků dynamické pole. Je to podobné jako ArrayList. Je však synchronizovaný a obsahuje mnoho metod, které nejsou součástí Collection frameworku.
Zvažte následující pří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ýstup:
Ayush Amit Ashish Garima
Zásobník
Zásobník je podtřídou Vector. Implementuje datovou strukturu last-in-first-out, tj. Stack. Zásobník obsahuje všechny metody třídy Vector a také poskytuje své metody jako boolean push(), boolean peek(), boolean push(object o), které definují její vlastnosti.
Zvažte následující pří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ýstup:
Ayush Garvit Amit Ashish
Rozhraní fronty
Rozhraní fronty udržuje pořadí „první dovnitř, první ven“. Může být definován jako uspořádaný seznam, který se používá k uložení prvků, které se mají zpracovat. Existují různé třídy jako PriorityQueue, Deque a ArrayDeque, které implementují rozhraní Queue.
Rozhraní fronty lze vytvořit jako:
Queue q1 = new PriorityQueue(); Queue q2 = new ArrayDeque();
Existují různé třídy, které implementují rozhraní Queue, některé z nich jsou uvedeny níže.
PriorityQueue
Třída PriorityQueue implementuje rozhraní Queue. Obsahuje prvky nebo objekty, které mají být zpracovány podle jejich priorit. PriorityQueue neumožňuje ukládání hodnot null do fronty.
Zvažte následující pří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ýstup:
head:Amit Sharma head:Amit Sharma iterating the queue elements: Amit Sharma Raj JaiShankar Vijay Raj after removing two elements: Raj Vijay Raj
A rozhraní
Rozhraní Deque rozšiřuje rozhraní Queue. V Deque můžeme odebírat a přidávat prvky z obou stran. Deque znamená dvojitou frontu, která nám umožňuje provádět operace na obou koncích.
Deque lze vytvořit jako:
Deque d = new ArrayDeque();
ArrayDeque
Třída ArrayDeque implementuje rozhraní Deque. Usnadňuje nám to používání Deque. Na rozdíl od fronty můžeme přidat nebo odstranit prvky z obou konců.
ArrayDeque je rychlejší než ArrayList a Stack a nemá žádná omezení kapacity.
Zvažte následující pří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ýstup:
Gautam Karan Ajay
Nastavit rozhraní
Set Interface v Javě je přítomen v balíčku java.util. Rozšiřuje rozhraní kolekce. Představuje neuspořádanou množinu prvků, která nám neumožňuje ukládat duplicitní položky. Do sady můžeme uložit maximálně jednu hodnotu null. Sada je implementována pomocí HashSet, LinkedHashSet a TreeSet.
Set lze vytvořit jako:
Set s1 = new HashSet(); Set s2 = new LinkedHashSet(); Set s3 = new TreeSet();
HashSet
Třída HashSet implementuje rozhraní Set. Představuje kolekci, která používá k ukládání hašovací tabulku. Hašování se používá k ukládání prvků v HashSet. Obsahuje unikátní položky.
Zvažte následující pří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ýstup:
Vijay Ravi Ajay
LinkedHashSet
Třída LinkedHashSet představuje implementaci LinkedList rozhraní Set Interface. Rozšiřuje třídu HashSet a implementuje rozhraní Set. Stejně jako HashSet obsahuje také jedinečné prvky. Udržuje pořadí vložení a povoluje nulové prvky.
Zvažte následující pří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ýstup:
Ravi Vijay Ajay
Rozhraní SortedSet
SortedSet je alternativou rozhraní Set, které poskytuje celkové řazení na svých prvcích. Prvky SortedSet jsou uspořádány ve vzestupném (vzestupném) pořadí. SortedSet poskytuje další metody, které brání přirozenému uspořádání prvků.
SortedSet lze vytvořit jako:
SortedSet set = new TreeSet();
TreeSet
Třída Java TreeSet implementuje rozhraní Set, které používá strom pro ukládání. Stejně jako HashSet obsahuje i TreeSet jedinečné prvky. Doba přístupu a načítání TreeSet je však poměrně rychlá. Prvky v TreeSet uložené ve vzestupném pořadí.
Zvažte následující pří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ýstup:
Ajay Ravi VijayCo se naučíme v Java Collections Framework
- Třída ArrayList
- Třída LinkedList
- Rozhraní seznamu
- Třída HashSet
- Třída LinkedHashSet
- Třída TreeSet
- Třída PriorityQueue
- Mapové rozhraní
- Třída HashMap
- Třída LinkedHashMap
- Třída TreeMap
- Hashtable třída
- Řazení
- Srovnatelné rozhraní
- Rozhraní komparátoru
- Třída vlastností v Javě