Les collections Java partie2 - les listes : linkedList

1 - L'interface List

LinkedList ( liste chainée ) est une implémentation de l'interface List. Nous allons découvrir ensemble dans ce tutoriel, comment créer l'élément linkedList, comment afficher ses élément,comment lui ajouter des éléments avec des exemples simples et rapides.

Pour créer une liste chainée ( linkedList ) il suffit de faire l'instanciation sur sa classe linkedList, sans oublier d'importer le package : java.util

Voici un exemple de liste chainée ( linkedList ) formée d'éléments du type String :

Exemple

import java.util.*;
public class LinkedList  {

	public static void main(String args[]) {

	  /*Déclaration d'une liste chainée ( Linked List ) */
	  LinkedList<String> maListe = new LinkedList<String>();
	 }
}

2 -  Ajout d'éléments à la liste

2 - 1 - Ajout d'un nouvel élément à la liste ( par défaut à la fin de la liste )

Pour ajouter des éléments à la liste, on utilise la syntaxe :

nom_de_la_liste.add("éléments") ;

Exemple

import java.util.*;
public class LinkedList  {

  public static void main(String args[]) {

	/*Déclaration d'une liste chainée ( Linked List ) */
    LinkedList<String> maListe = new LinkedList<String>();

	         // Ajout d'éléments à la liste
	         maListe.add("Voiture");
	         maListe.add("Moto");
	         maListe.add("Vélo");
  }
}

Voici maintenant le code pour afficher la liste :

import java.util.*;
public class LinkedList  {

  public static void main(String args[]) {

	/*Déclaration d'une liste chainée ( Linked List ) */
    LinkedList<String> maListe = new LinkedList<String>();

	         // Ajout d'éléments à la liste
	         maListe.add("Voiture");
	         maListe.add("Moto");
	         maListe.add("Vélo");
	  /*Affichage de la liste chainée*/
	  System.out.println("Contenu de la liste: " + maListe);  
  }
}

2 - 2 -  Ajout d'un élément à une position déterminée

Nous allons voir maintenant comment  ajouter un élément au début ou à la fin de la liste ou encore à une position donnée :

  • Pour ajouter un élément au début de la liste, on utilise la syntaxe  : nom-de_la_liste.addFirst("élément au début");
  • Pour ajouter un élément à la fin de la liste, on utilise la syntaxe : nom-de_la_liste..addLast("élément à la fin");
  • Pour ajouter un élément à une position k donnée, on utilise la syntaxe  : nom-de_la_liste.add(k,"élément à la kème position");

Exemple

import java.util.*;
public class maListe  {

   public static void main(String args[]) {

   /*Déclaration d'une liste chainée ( Linked List ) */
   LinkedList<String> maListe = new LinkedList<String>();

	         // Ajout d'éléments à la liste
	         maListe.add("Voiture");
	         maListe.add("Moto");
	         maListe.add("Vélo");

	 /*Affichage de la liste chainée*/
	 System.out.println("Contenu de la liste avant ajout: " +maListe);

	         /*Ajout d'un élément au début la liste*/
	         maListe.addFirst("Avion");
	         /*Ajout d'un élément à la fin de la liste*/
	         maListe.addLast("miniVélo");
	 /* Affichage après ajout */
	 System.out.println("Contenu de la liste après ajout : " +maListe);
		 }
}

Ce qui affiche après exécution sur Eclipse :

Contenu de la liste avant ajout: [Voiture, Moto, Vélo]
Contenu de la liste après ajout : [Avion, Voiture, Moto, Vélo, miniVélo]

3 - Récupération des élément de la liste

Pour récupérer un élément à la k ème position de la liste on utilise la syntaxe :

[nom_de_la_liste].get( [numéro de position de l'élément] ) ;

Voici un exemple permettant de récupérer l'élément à la 2 ème position de la liste :

Exemple

import java.util.LinkedList;
public class ListGet {
	public static void main(String[] args) {	
LinkedList<String> myList = new LinkedList<String>();
myList.add("Avion");
myList.add("voiture");
myList.add("moto");
myList.add("Vélo");
//Accè à un élément de la liste
String s=myList.get(2);
//affichage de l'élément obtenu
System.out.println("L'élément qui se trouve à la 2ème position est   : " + s);

}
	}

Ce qui affiche après exécution sur Eclipse :

L'élément qui se trouve à la 2ème position est   : moto

4 - Suppression d'un élément de la liste

4 - 1 - Suppression d'un élément par son index

Un élément quelconque de la liste peut être supprimé via son index en utilisant la syntaxe :

[nom_de_la_liste].remove( index de l'élément ) ;

Voici un exemple qui permet de supprimer l'élément "moto" qui se trouve à l'index 2 de la liste

Exemple

import java.util.LinkedList;

public class RemoveElement {
	public static void main(String[] args) {	
  LinkedList<String> myList = new LinkedList<String>();
  myList.add("Avion");
  myList.add("voiture");
  myList.add("moto");
  myList.add("Scooter");
  myList.add("Vélo");
 //affichage de la liste avant suppression
 System.out.println("Contenu de la liste avant suppression : "+myList);
 //Supression d'un élément de la liste à une position donnée

 myList.remove(2);
 //affichage de la liste après suppression 
 System.out.println("Contenu de la liste après suppression: "+myList);

}
	}

Ce qui affiche après exécution sur Eclipse :

Contenu de la liste avant suppression : [Avion, voiture, moto, Scooter, Vélo]
Contenu de la liste après suppression: [Avion, voiture, Scooter, Vélo]

4 - 2 - Suppression directe d'un élément par son nom

On peut aussi supprimer un élément de la liste en utilisant son nom via la syntaxe :

[nom_de_la_liste].remove([  nom de de l'élément ] ) ;

Voici un exemple permettant de supprimer directement l'élément  "Scooter" de la liste :

Exemple

import java.util.LinkedList;

public class Test {
	public static void main(String[] args) {	
LinkedList<String> myList = new LinkedList<String>();
myList.add("Avion");
myList.add("voiture");
myList.add("moto");
myList.add("Scooter");
myList.add("Vélo");
//affichage de la liste avant suppression
System.out.println("Contenu de la liste avant suppression : "+myList);
//Suppression directe d'un élemnt par son nom
myList.remove("Scooter");
//Affichage de la liste après suppression
System.out.println("Contenu de la liste après suppression: "+myList);
}
}

4 - 3 - Vider la liste

On aussi vider la liste ( c.a.d supprimer tous les éléments de la liste ) via la syntaxe :

[nom_de_la_liste].clear(  ) ;

Exemple

import java.util.LinkedList;

public class ClearList {
	public static void main(String[] args) {	
LinkedList<String> myList = new LinkedList<String>();
myList.add("Avion");
myList.add("voiture");
myList.add("moto");
myList.add("Scooter");
myList.add("Vélo");
//Affichage de la liste avant suppression
System.out.println("Contenu de la liste avant suppression : "+myList);
// Suppression de tous les éléments de la liste
myList.clear();
// Affichage après suppression de tous les éléments
System.out.println("Contenu de la liste après clear() :");
}
	}

Ce qui affiche après exécution sur Eclipse :

Contenu de la liste avant suppression : [Avion, voiture, moto, Scooter, Vélo]
Contenu de la liste après clear() :

5 - Parcourt de la liste

5 - 1 Parcourt de la liste par la méthode listIterator()

Afin de pouvoir parcourir tous les éléments de la liste via la méthode Iterator() , il va falloir préalablement définir la variable iterator qui va parcourir la liste via la syntaxe :

ListIterator<String> it = [nom_de_la_liste].listIterator();

On utilise ensuite la syntaxe :

while(it.hasNext()){
	System.out.println(it.next());
	}

Exemple

import java.util.*;
public class IteratorList {
	public static void main(String[] args) {	
LinkedList<String> myList = new LinkedList<String>();
myList.add("voiture");
myList.add("moto");
myList.add("Scooter");
myList.add("Vélo");
//Création de l'iterator
ListIterator<String> it = myList.listIterator();
//parcourt des éléments de la liste	
while(it.hasNext()){
	System.out.println(it.next());
	}
}
	}

Ce qui affiche après exécution sur Eclipse :

voiture
moto
Scooter
Vélo

5 - 2 -Parcourt de la liste à l'aide de la boucle for

Nous pouvons aussi parcourir les éléments de la liste en définissant une variable qui aura pour fonction d'explorer la liste du début jusqu’à la fin en utilisant la boucle for :

for(String s : nom_de_la_liste){
	System.out.println(s);
	}

Exemple

import java.util.LinkedList;

public class ListLireFor {
	public static void main(String[] args) {	
LinkedList<String> myList = new LinkedList<String>();
myList.add("voiture");
myList.add("moto");
myList.add("Scooter");
myList.add("Vélo");

//parcourt des éléments de la liste	avec la boucle for
for(String s:myList){
	System.out.println(s);
	}
}
	}

Ce qui doit afficher après exécution sur Eclipse :

voiture
moto
Scooter
Vélo

Remarque :

La même étude faite avec les variables String est valable pour les autres variables, il suffit pour cela d'indiquer au départ pendant l'instanciation  le type de variable utilisé :

LinkedList<String> myList = new LinkedList<String>();
LinkedList<Double> myList = new LinkedList<Double>();
LinkedList<int> myList = new LinkedList<int>();
//  ...

Younes Derfoufi
CRMEF OUJDA

Leave a Reply