Les collections en Java

Collection en Java est un framework qui fournit une architecture pour stocker et manipuler un groupe d’objets.

Les collections en Java peuvent réaliser toutes les opérations que vous effectuez sur des données telles que la recherche, le tri, l’insertion, la manipulation et la suppression.

Le framework Collection fournit de nombreuses interfaces (Set, List, Queue, Deque) et classes (ArrayList, Vector, LinkedList, PriorityQueue, HashSet, LinkedHashSet, TreeSet).
 
 

Hiérarchie du framework Collection

Le package java.util contient toutes les classes et interfaces du framework Collection.
 

 

Les méthodes de l’interface Collection
Méthode
Description
public boolean add(E e) Il est utilisé pour insérer un élément dans une collection.
public boolean addAll(Collection<? extends E> c) Il est utilisé pour ajouter la collection c à la collection existante.
public boolean remove(Object element) Il est utilisé pour supprimer un élément de la collection.
public boolean removeAll(Collection <?> c) Il est utilisé pour supprimer tous les éléments d’une collection contenus dans la collection spécifiée.
default boolean removeIf(Predicate<? super E> filter) Il est utilisé pour supprimer tous les éléments d’une collection qui satisfont le prédicat spécifié.
public boolean retainAll(Collection<?> c) Il est utilisé pour supprimer les éléments d’une liste qui ne sont pas contenus dans la collection spécifiée.
public int size() Il renvoie le nombre total d’éléments dans une collection.
public void clear() Il supprime tous les éléments d’une collection.
public boolean contains(Object e) Il est utilisé pour rechercher un élément.
public Iterator iterator() Il renvoie un itérateur.
public Object[] toArray() Il convertit une collection en un tableau.
public boolean isEmpty() Il vérifie si la collection est vide.
default Spliterator<E> spliterator() Il génère un Spliterator sur les éléments spécifiés d’une collection.
public boolean equals(Object e) Il compare deux collections.

 
 

Interface List

List est une interface fille de Collection. Il s’agit d’une collection ordonnée dans laquelle des valeurs en double peuvent être stockées. Comme List préserve l’ordre d’insertion, il permet l’accès positionnel et l’insertion d’éléments. L’interface List est implémentée par les classes ArrayList, LinkedList, Vector et Stack.

Pour instancier l’interface List, nous devons utiliser:

List <Type> l1 = new ArrayList();
List <Type> l2 = new LinkedList();
List <Type> l3 = new Vector();
List <Type> l4 = new Stack();

Il existe différentes méthodes dans l’interface Liste qui peuvent être utilisées pour insérer, supprimer et accéder aux éléments d’une liste.
 

ArrayList

La classe ArrayList implémente l’interface List. Il utilise un tableau dynamique pour stocker l’élément en double de différents types. La classe ArrayList maintient l’ordre d’insertion et n’est pas synchronisée. Les éléments stockés dans la classe ArrayList sont accessibles de manière aléatoire. Prenons l’exemple suivant.

import java.util.*;

public class Main{
	
	public static void main(String args[]){
		
		ArrayList<String> list = new ArrayList<String>();
	  
		list.add("Java");
		list.add("PHP");
		list.add("Python");
		list.add("Pascal");

		System.out.println(list);
	}
}

 
Sortie:

[Java, PHP, Python, Pascal]

 
 

LinkedList

LinkedList implémente l’interface Collection. Il utilise une liste doublement liée en interne pour stocker les éléments. Il peut stocker les éléments en double. Il maintient l’ordre d’insertion et n’est pas synchronisé. Dans LinkedList, la manipulation est rapide car aucun décalage n’est requis.

import java.util.*;

public class Main{
	
	public static void main(String args[]){
		
		LinkedList<String> lk = new LinkedList<String>();
	  
		lk.add("Java");
		lk.add("PHP");
		lk.add("Python");
		lk.add("Pascal");

		System.out.println(lk);
	}
}

 
Sortie:

[Java, PHP, Python, Pascal]
Vector

Vector utilise un tableau dynamique pour stocker les éléments. Il est similaire à ArrayList. Cependant, il est synchronisé et contient de nombreuses méthodes qui ne font pas partie du framework Collection.

import java.util.*;

public class Main{
	
	public static void main(String args[]){
		
		Vector<String> vect = new Vector<String>();
	  
		vect.add("Java");
		vect.add("PHP");
		vect.add("Python");
		vect.add("Pascal");

		System.out.println(vect);
	}
}

 
Sortie:

[Java, PHP, Python, Pascal]
Stack

Stack est une sous-classe de Vector. Il implémente la structure de données LIFO(last-in-first-out) c’est-à-dire une pile. Stack contient toutes les méthodes de la classe Vector et fournit également ses méthodes comme push(), peek(), push(), qui définit ses propriétés.

import java.util.*;

public class Main{
	
	public static void main(String args[]){
		
		Stack<String> pile = new Stack<String>();

		pile.push("Java");
		pile.push("PHP");
		pile.push("Python");
		pile.push("Pascal");

		System.out.println(pile);
	}
}

 
Sortie:

[Java, PHP, Python, Pascal]

 
 

Interface Queue

L’interface Queue maintient l’ordre du FIFO(first-in-first-out) premier entré, premier sorti. Il peut être défini comme une liste ordonnée qui est utilisée pour contenir les éléments qui sont sur le point d’être traités. Il existe différentes classes comme PriorityQueue, Deque et ArrayDeque qui implémentent l’interface Queue.

L’interface Queue peut être instanciée comme suite:

Queue<Type> q1 = new PriorityQueue();
Queue<Type> q2 = new ArrayDeque();

 

PriorityQueue

La classe PriorityQueue implémente l’interface Queue. Il contient les éléments ou objets à traiter selon leurs priorités. PriorityQueue ne permet pas de stocker des valeurs nulles dans la queue.

import java.util.*;

public class Main{
	
	public static void main(String args[]){
		
		PriorityQueue<String> queue = new PriorityQueue<String>();
	  
		queue.add("Java");
		queue.add("PHP");
		queue.add("Python");
		queue.add("Pascal");

		System.out.println("Tête: "+queue.peek());
		System.out.println(queue);
	}
}

 
Sortie:

Tête: Java
[Java, PHP, Python, Pascal]

 

Interface Set

Interface Set en Java se trouve dans le package java.util. Il hérite l’interface Collection. Il représente l’ensemble d’éléments non ordonnés qui ne nous permet pas de stocker les éléments en double. Nous pouvons stocker au plus une valeur nulle dans Set. Set est implémenté par HashSet, LinkedHashSet et TreeSet.

Set peut être instancié comme suit :

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

La classe HashSet implémente l’interface Set. Il représente la collection qui utilise une table de hachage pour le stockage. Le hachage est utilisé pour stocker les éléments dans le HashSet. Il contient des éléments uniques.

import java.util.*;

public class Main{
	
	public static void main(String args[]){
		
		HashSet<String> hash = new HashSet<String>();
	  
		hash.add("Java");
		hash.add("PHP");
		hash.add("Python");
		hash.add("Pascal");

		System.out.println(hash);
	}
}

 
Sortie:

[Java, PHP, Python, Pascal]
LinkedHashSet

La classe LinkedHashSet hérite la classe HashSet et implémente l’interface Set. Il contient également des éléments uniques. Il maintient l’ordre d’insertion et autorise les éléments nuls.

import java.util.*;

public class Main{
	
	public static void main(String args[]){
		
		LinkedHashSet<String> hash = new LinkedHashSet<String>();

		hash.add("Java");
		hash.add("PHP");
		hash.add("Python");
		hash.add("Pascal");

		System.out.println(hash);
	}
}

 
Sortie:

[Java, PHP, Python, Pascal]

 
 

L’interface SortedSet

SortedSet est l’alternative de l’interface Set qui fournit un ordre total sur ses éléments. Les éléments du SortedSet sont classés dans l’ordre croissant.

L’interface SortedSet peut être instancié comme:

SortedSet <Type> set = new TreeSet();

 

TreeSet

La classe TreeSet implémente l’interface Set qui utilise une arborescence pour le stockage. Comme HashSet, TreeSet contient également des éléments uniques. Cependant, le temps d’accès et de récupération de TreeSet est assez rapide. Les éléments de TreeSet sont stockés dans l’ordre croissant.

import java.util.*;

public class Main{
	
	public static void main(String args[]){
		
		TreeSet<String> ts = new TreeSet<String>();
	  
		ts.add("Java");
		ts.add("PHP");
		ts.add("Python");
		ts.add("Pascal");

		System.out.println(ts);
	}
}

 
Sortie:

[Java, PHP, Python, Pascal]
QCM-Java

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *