logo

Sbírky v Javě

  1. Java Collection Framework
  2. Hierarchie Collection Framework
  3. Rozhraní sběru
  4. Rozhraní iterátoru

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:

  1. Rozhraní a jeho implementace, tj. třídy
  2. 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.

Hierarchie frameworku Java Collection

Metody sběrného rozhraní

Existuje mnoho metod deklarovaných v rozhraní kolekce. Jsou následující:

Ne.MetodaPopis
1public boolean add(E e)Slouží k vložení prvku do této kolekce.
2public boolean addAll(kolekce c)Používá se k vložení zadaných prvků kolekce do vyvolávající kolekce.
3public boolean remove(element Object)Používá se k odstranění prvku z kolekce.
4public boolean removeAll(kolekce c)Používá se k odstranění všech prvků zadané kolekce z vyvolávající kolekce.
5výchozí logická hodnota removeIf (predikátový filtr)Používá se k odstranění všech prvků kolekce, které splňují zadaný predikát.
6public boolean keepAll(kolekce c)Používá se k odstranění všech prvků vyvolávající kolekce kromě zadané kolekce.
7public int size()Vrátí celkový počet prvků v kolekci.
8public void clear()Odebere celkový počet prvků z kolekce.
9public boolean obsahuje(prvek Object)Používá se k vyhledávání prvku.
10public boolean obsahuje vše (kolekce c)Slouží k vyhledávání zadané kolekce v kolekci.
jedenáctpublic Iterator iterator()Vrací iterátor.
12public Object[] toArray()Převádí kolekci na pole.
13public T[] toArray(T[] a)Převádí kolekci na pole. Zde je typem runtime vráceného pole typ zadaného pole.
14public boolean isEmpty()Kontroluje, zda je sbírka prázdná.
patnáctvýchozí Stream parallelStream()Vrací možná paralelní proud s kolekcí jako jejím zdrojem.
16výchozí stream stream()Vrátí sekvenční Stream s kolekcí jako zdrojem.
17výchozí Spliterator spliterator()Vygeneruje Spliterator nad určenými prvky v kolekci.
18veřejné booleovské rovná se (prvek Object)Odpovídá dvěma kolekcím.
19public 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.MetodaPopis
1public boolean hasNext()Vrací true, pokud má iterátor více prvků, jinak vrací false.
2public Object next()Vrátí prvek a přesune ukazatel kurzoru na další prvek.
3public 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 Vijay 
Co se naučíme v Java Collections Framework
  1. Třída ArrayList
  2. Třída LinkedList
  3. Rozhraní seznamu
  4. Třída HashSet
  5. Třída LinkedHashSet
  6. Třída TreeSet
  7. Třída PriorityQueue
  8. Mapové rozhraní
  9. Třída HashMap
  10. Třída LinkedHashMap
  11. Třída TreeMap
  12. Hashtable třída
  13. Řazení
  14. Srovnatelné rozhraní
  15. Rozhraní komparátoru
  16. Třída vlastností v Javě