logo

Col·leccions en Java

  1. Java Collection Framework
  2. Jerarquia del marc de col·lecció
  3. Interfície de col·lecció
  4. Interfície iteradora

El Col·lecció en Java és un framework que proporciona una arquitectura per emmagatzemar i manipular el grup d'objectes.

Les col·leccions de Java poden realitzar totes les operacions que realitzeu sobre les dades, com ara la cerca, l'ordenació, la inserció, la manipulació i la supressió.

Col·lecció Java significa una única unitat d'objectes. El marc de col·lecció Java proporciona moltes interfícies (Set, List, Queue, Deque) i classes ( ArrayList , Vector, LinkedList , PriorityQueue , HashSet, LinkedHashSet, TreeSet).

Què és la col·lecció en Java

Una col·lecció representa una única unitat d'objectes, és a dir, un grup.

Què és un framework en Java

  • Proporciona una arquitectura ja feta.
  • Representa un conjunt de classes i interfícies.
  • És opcional.

Què és el marc de la col·lecció

El marc de col·lecció representa una arquitectura unificada per emmagatzemar i manipular un grup d'objectes. Té:

  1. Interfícies i les seves implementacions, és a dir, classes
  2. Algorisme

Saps?
  • Quines són les dues maneres d'iterar els elements d'una col·lecció?
  • Quina diferència hi ha entre les classes ArrayList i LinkedList al marc de col·lecció?
  • Quina diferència hi ha entre les classes ArrayList i Vector al marc de col·lecció?
  • Quina diferència hi ha entre les classes HashSet i HashMap al marc de col·lecció?
  • Quina diferència hi ha entre la classe HashMap i Hashtable?
  • Quina diferència hi ha entre la interfície d'iterador i d'enumeració al marc de col·lecció?
  • Com podem ordenar els elements d'un objecte? Quina diferència hi ha entre les interfícies Comparable i Comparator?
  • Què fa el mètode hashcode()?
  • Quina diferència hi ha entre la col·lecció Java i les col·leccions Java?

Jerarquia del marc de col·lecció

Vegem la jerarquia del marc de col·lecció. El java.util el paquet conté tots els classes i interfícies per al marc de la col·lecció.

Jerarquia del marc de col·lecció Java

Interfície de mètodes de recollida

Hi ha molts mètodes declarats a la interfície Col·lecció. Són els següents:

No.MètodeDescripció
1afegeix booleà públic (E e)S'utilitza per inserir un element en aquesta col·lecció.
2public boolean addAll(Col·lecció c)S'utilitza per inserir els elements de col·lecció especificats a la col·lecció invocadora.
3public boolean remove (element objecte)S'utilitza per eliminar un element de la col·lecció.
4public boolean removeAll (Col·lecció c)S'utilitza per eliminar tots els elements de la col·lecció especificada de la col·lecció invocadora.
5booleà predeterminat removeIf (filtre de predicats)S'utilitza per eliminar tots els elements de la col·lecció que compleixen el predicat especificat.
6public boolean retainAll(Col·lecció c)S'utilitza per eliminar tots els elements de la col·lecció invocant excepte la col·lecció especificada.
7mida pública int ()Retorna el nombre total d'elements de la col·lecció.
8buit públic clar ()Elimina el nombre total d'elements de la col·lecció.
9booleà públic conté (element objecte)S'utilitza per cercar un element.
10public boolean containsAll (Col·lecció c)S'utilitza per cercar la col·lecció especificada a la col·lecció.
11iterador públic iterador()Retorna un iterador.
12Objecte públic[] toArray()Converteix la col·lecció en matriu.
13public T[] toArray(T[] a)Converteix la col·lecció en matriu. Aquí, el tipus d'execució de la matriu retornada és la de la matriu especificada.
14booleà públic isEmpty()Comprova si la col·lecció està buida.
15Flux predeterminat parallelStream()Retorna un flux possiblement paral·lel amb la col·lecció com a font.
16Tauler d'activitat per defecte ()Retorna un flux seqüencial amb la col·lecció com a font.
17Spliterator spliterator predeterminat ()Genera un Spliterator sobre els elements especificats de la col·lecció.
18booleà públic iguals (element objecte)Coincideix amb dues col·leccions.
19public int hashCode()Retorna el número de codi hash de la col·lecció.

Interfície iteradora

La interfície de l'iterador ofereix la possibilitat d'iterar els elements només en direcció cap endavant.

Mètodes de la interfície iteradora

Només hi ha tres mètodes a la interfície Iterator. Ells són:

No.MètodeDescripció
1booleà públic hasNext()Retorna true si l'iterador té més elements en cas contrari retorna false.
2Public Object next()Retorna l'element i mou el punter del cursor al següent element.
3public void remove ()Elimina els últims elements retornats per l'iterador. És menys utilitzat.

Interfície iterable

La interfície iterable és la interfície arrel per a totes les classes de col·lecció. La interfície Col·lecció amplia la interfície Iterable i, per tant, totes les subclasses de la interfície Col·lecció també implementen la interfície Iterable.

Conté només un mètode abstracte. és a dir,

 Iterator iterator() 

Retorna l'iterador sobre els elements de tipus T.

producte de punts numpy

Interfície de col·lecció

La interfície de col·lecció és la interfície implementada per totes les classes del marc de col·lecció. Declara els mètodes que tindrà cada col·lecció. En altres paraules, podem dir que la interfície de la col·lecció construeix la base de la qual depèn el marc de la col·lecció.

Alguns dels mètodes de la interfície de Col·lecció són Boolean add ( Object obj ), Boolean addAll ( Col·lecció c ), void clear(), etc., que són implementats per totes les subclasses de la interfície de Col·lecció.


Interfície de llista

La interfície de llista és la interfície secundària de la interfície de col·lecció. Inhibeix una estructura de dades de tipus llista en la qual podem emmagatzemar la col·lecció ordenada d'objectes. Pot tenir valors duplicats.

La interfície de llista està implementada per les classes ArrayList, LinkedList, Vector i Stack.

Per crear una instancia de la interfície de llista, hem d'utilitzar:

 List list1= new ArrayList(); List list2 = new LinkedList(); List list3 = new Vector(); List list4 = new Stack(); 

Hi ha diversos mètodes a la interfície de llista que es poden utilitzar per inserir, eliminar i accedir als elements de la llista.

Les classes que implementen la interfície de llista es donen a continuació.


ArrayList

La classe ArrayList implementa la interfície List. Utilitza una matriu dinàmica per emmagatzemar l'element duplicat de diferents tipus de dades. La classe ArrayList manté l'ordre d'inserció i no està sincronitzada. Es pot accedir aleatòriament als elements emmagatzemats a la classe ArrayList. Considereu l'exemple següent.

 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()); } } } 

Sortida:

 Ravi Vijay Ravi Ajay 

LinkedList

LinkedList implementa la interfície Col·lecció. Utilitza una llista doblement enllaçada internament per emmagatzemar els elements. Pot emmagatzemar els elements duplicats. Manté l'ordre d'inserció i no està sincronitzat. A LinkedList, la manipulació és ràpida perquè no es requereix cap canvi.

Considereu l'exemple següent.

 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()); } } } 

Sortida:

 Ravi Vijay Ravi Ajay 

Vector

Vector utilitza una matriu dinàmica per emmagatzemar els elements de dades. És similar a ArrayList. Tanmateix, està sincronitzat i conté molts mètodes que no formen part del marc de col·lecció.

Considereu l'exemple següent.

 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()); } } } 

Sortida:

 Ayush Amit Ashish Garima 

Pila

La pila és la subclasse de Vector. Implementa l'estructura de dades de l'últim en entrar, primer en sortir, és a dir, Stack. La pila conté tots els mètodes de la classe Vector i també proporciona els seus mètodes com boolean push(), boolean peek(), boolean push (objecte o), que defineix les seves propietats.

Considereu l'exemple següent.

 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()); } } } 

Sortida:

 Ayush Garvit Amit Ashish 

Interfície de cua

La interfície de cua manté l'ordre del primer en entrar, primer en sortir. Es pot definir com una llista ordenada que s'utilitza per contenir els elements que estan a punt de ser processats. Hi ha diverses classes com PriorityQueue, Deque i ArrayDeque que implementen la interfície Queue.

La interfície de cua es pot instanciar com:

 Queue q1 = new PriorityQueue(); Queue q2 = new ArrayDeque(); 

Hi ha diverses classes que implementen la interfície Queue, algunes d'elles es mostren a continuació.


PriorityQueue

La classe PriorityQueue implementa la interfície Queue. Conté els elements o objectes que han de ser processats per les seves prioritats. PriorityQueue no permet emmagatzemar valors nuls a la cua.

Considereu l'exemple següent.

 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()); } } } 

Sortida:

 head:Amit Sharma head:Amit Sharma iterating the queue elements: Amit Sharma Raj JaiShankar Vijay Raj after removing two elements: Raj Vijay Raj 

I la interfície

La interfície Deque amplia la interfície de la cua. A Deque, podem eliminar i afegir els elements dels dos costats. Deque significa una cua de doble extrem que ens permet realitzar les operacions als dos extrems.

Deque es pot instanciar com:

 Deque d = new ArrayDeque(); 

ArrayDeque

La classe ArrayDeque implementa la interfície Deque. Ens facilita l'ús del Deque. A diferència de la cua, podem afegir o eliminar els elements dels dos extrems.

ArrayDeque és més ràpid que ArrayList i Stack i no té restriccions de capacitat.

Considereu l'exemple següent.

 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); } } } 

Sortida:

 Gautam Karan Ajay 

Estableix la interfície

Set Interface a Java està present al paquet java.util. Amplia la interfície de Col·lecció. Representa el conjunt no ordenat d'elements que no ens permet emmagatzemar els elements duplicats. Podem emmagatzemar com a màxim un valor nul a Set. Set està implementat per HashSet, LinkedHashSet i TreeSet.

El conjunt es pot instanciar com:

 Set s1 = new HashSet(); Set s2 = new LinkedHashSet(); Set s3 = new TreeSet(); 

HashSet

La classe HashSet implementa Set Interface. Representa la col·lecció que utilitza una taula hash per a l'emmagatzematge. El hashing s'utilitza per emmagatzemar els elements al HashSet. Conté articles únics.

Considereu l'exemple següent.

 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()); } } } 

Sortida:

 Vijay Ravi Ajay 

LinkedHashSet

La classe LinkedHashSet representa la implementació LinkedList de Set Interface. Estén la classe HashSet i implementa la interfície Set. Igual que HashSet, també conté elements únics. Manté l'ordre d'inserció i permet elements nuls.

Considereu l'exemple següent.

 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()); } } } 

Sortida:

 Ravi Vijay Ajay 

Interfície SortedSet

SortedSet és l'alternativa de la interfície Set que proporciona una ordenació total dels seus elements. Els elements del SortedSet s'organitzen en ordre creixent (creixent). El SortedSet proporciona els mètodes addicionals que inhibeixen l'ordenació natural dels elements.

El SortedSet es pot instanciar com:

 SortedSet set = new TreeSet(); 

Conjunt d'arbres

La classe Java TreeSet implementa la interfície Set que utilitza un arbre per a l'emmagatzematge. Igual que HashSet, TreeSet també conté elements únics. Tanmateix, el temps d'accés i recuperació de TreeSet és bastant ràpid. Els elements del TreeSet s'emmagatzemen en ordre ascendent.

Considereu l'exemple següent:

 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()); } } } 

Sortida:

 Ajay Ravi Vijay 
Què aprendrem a Java Collections Framework
  1. Classe ArrayList
  2. Classe LinkedList
  3. Interfície de llista
  4. Classe HashSet
  5. Classe LinkedHashSet
  6. Classe TreeSet
  7. Classe PriorityQueue
  8. Interfície de mapa
  9. Classe HashMap
  10. Classe LinkedHashMap
  11. Classe TreeMap
  12. Classe de hashtable
  13. Classificació
  14. Interfície comparable
  15. Interfície de comparació
  16. Classe de propietats en Java