- Java Collection Framework
- Jerarquia del marc de col·lecció
- Interfície de col·lecció
- 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é:
- Interfícies i les seves implementacions, és a dir, classes
- 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ó.
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ètode | Descripció |
---|---|---|
1 | afegeix booleà públic (E e) | S'utilitza per inserir un element en aquesta col·lecció. |
2 | public boolean addAll(Col·lecció c) | S'utilitza per inserir els elements de col·lecció especificats a la col·lecció invocadora. |
3 | public boolean remove (element objecte) | S'utilitza per eliminar un element de la col·lecció. |
4 | public boolean removeAll (Col·lecció c) | S'utilitza per eliminar tots els elements de la col·lecció especificada de la col·lecció invocadora. |
5 | booleà predeterminat removeIf (filtre de predicats) | S'utilitza per eliminar tots els elements de la col·lecció que compleixen el predicat especificat. |
6 | public boolean retainAll(Col·lecció c) | S'utilitza per eliminar tots els elements de la col·lecció invocant excepte la col·lecció especificada. |
7 | mida pública int () | Retorna el nombre total d'elements de la col·lecció. |
8 | buit públic clar () | Elimina el nombre total d'elements de la col·lecció. |
9 | booleà públic conté (element objecte) | S'utilitza per cercar un element. |
10 | public boolean containsAll (Col·lecció c) | S'utilitza per cercar la col·lecció especificada a la col·lecció. |
11 | iterador públic iterador() | Retorna un iterador. |
12 | Objecte públic[] toArray() | Converteix la col·lecció en matriu. |
13 | public 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. |
14 | booleà públic isEmpty() | Comprova si la col·lecció està buida. |
15 | Flux predeterminat parallelStream() | Retorna un flux possiblement paral·lel amb la col·lecció com a font. |
16 | Tauler d'activitat per defecte () | Retorna un flux seqüencial amb la col·lecció com a font. |
17 | Spliterator spliterator predeterminat () | Genera un Spliterator sobre els elements especificats de la col·lecció. |
18 | booleà públic iguals (element objecte) | Coincideix amb dues col·leccions. |
19 | public 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ètode | Descripció |
---|---|---|
1 | booleà públic hasNext() | Retorna true si l'iterador té més elements en cas contrari retorna false. |
2 | Public Object next() | Retorna l'element i mou el punter del cursor al següent element. |
3 | public 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 VijayQuè aprendrem a Java Collections Framework
- Classe ArrayList
- Classe LinkedList
- Interfície de llista
- Classe HashSet
- Classe LinkedHashSet
- Classe TreeSet
- Classe PriorityQueue
- Interfície de mapa
- Classe HashMap
- Classe LinkedHashMap
- Classe TreeMap
- Classe de hashtable
- Classificació
- Interfície comparable
- Interfície de comparació
- Classe de propietats en Java