Java >> Tutoriel Java >  >> Java

Introduction à la liste liée Java

Java LinkedList est une classe d'implémentation de l'interface List dans Collection Framework. Il implémente une liste à double liaison (structure de données) en interne pour stocker les données. Il permet d'effectuer toutes les opérations de liste et autorise tous les éléments, y compris la valeur nulle.

Il a été ajouté dans la version Java 1.2 et se trouve dans java.util package du module java.base. Dans cet article, nous verrons quelques exemples pour comprendre le fonctionnement de LinkedList. La syntaxe de la classe est la suivante :

Déclaration de classe LinkedList

public class LinkedList<E>
extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, Serializable

 

Propriétés de ArrayList :

  • Doublons autorisés :  Il peut contenir des éléments en double.
  • Commandé :  Il conserve l'ordre d'insertion.
  • Null autorisé :  Il peut contenir une valeur nulle.
  • Non synchronisé :  Il n'est pas synchronisé.
  • Basé sur un index :  Il permet d'accéder aux éléments en utilisant les positions d'index. L'index commence par '0'.
  • Redimensionnement dynamique :  Il se redimensionne dynamiquement lorsque plus d'éléments doivent être ajoutés que sa taille actuelle.

 

Exemple simple de liste de tableaux

Commençons par créer une LinkedList et ajoutons-y des éléments en utilisant la méthode add(). Ici, nous créons une collection de données sur les étudiants et les stockons dans une LinkedList.

import java.util.LinkedList;
/* 
 * Code example to create LinkedList in Java
 */
public class JExercise {
	public static void main(String[] args) {

		LinkedList<String> students = new LinkedList<String>();
		students.add("Kunal");
		students.add("Rohan");
		students.add("David");
		System.out.println(students);
	}
}

Sortie :

[Kunal, Rohan, David]

Comment créer une liste liée en Java ?

Pour créer une LinkedList, la classe LinkedList fournit deux constructeurs. l'un est utilisé pour créer une liste vide tandis que l'autre est utilisé pour créer LinkedList avec des éléments d'une collection telle que ArrayList. Voyons le tableau ci-dessous.

Constructeurs ArrayList

Constructeur Description
ListeLiée() Il est utilisé pour construire une liste vide.
LinkedList​(Collection c) Il est utilisé pour construire une liste contenant les éléments de la collection spécifiée, dans l'ordre, ils sont retournés par l'itérateur de la collection.

Créer une LinkedList avec des éléments List

Ici, nous avons utilisé le deuxième constructeur pour créer LinkedList à partir des éléments de la liste. Il est utile lorsque nous voulons créer LinkedList à partir des collections existantes telles que list, set, etc.

import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
/* 
 * Code example to create LinkedList from other collection(list) in Java
 */
public class JExercise {
	public static void main(String[] args) {
		List<String> list = Arrays.asList("Kunal","Rohan","David");
		// Get LinkedList from a List  
		LinkedList<String> students = new LinkedList<String>(list);
		System.out.println(students);
	}
}

Sortie :

[Kunal, Rohan, David]
 

Opérations sur LinkedList

LinkedList permet toutes les opérations courantes telles que l'ajout, la suppression et l'accès aux éléments. Ici, nous verrons quelques exemples pour travailler avec LinkedList.

Exemple :Ajouter des éléments

Liste liée La classe fournit plusieurs méthodes pour ajouter des éléments tels que add() ajoute les éléments dans une séquence tandis que la méthode addFirst() la méthode ajoute les éléments au début de LInkedLIst et addLast() La méthode ajoute les éléments à la fin de LInkedList. Nous pouvons utiliser ces méthodes selon les besoins. Voir l'exemple où nous avons utilisé toutes ces méthodes.

import java.util.LinkedList;
/* 
 * Code example to create LinkedList and elements in Java
 */
public class JExercise {
	public static void main(String[] args) {
		LinkedList<String> students = new LinkedList<String>();
		students.add("Kunal");
		students.add("Rohan");
		students.add("David");
		System.out.println(students);
		// Adding element at starting of list
		students.addFirst("Mohan");
		System.out.println(students);
		// Adding element at specified index
		students.add(2,"John");
		System.out.println(students);
		// Adding element at end of the list
		students.addLast("Hemant");
		System.out.println(students);
	}
}

Sortie :

[Kunal, Rohan, David]
[Mohan, Kunal, Rohan, David]
[Mohan, Kunal, John, Rohan, David]
[Mohan, Kunal, John, Rohan, David, Hémant]
 

Exemple :suppression d'éléments

Liste liée La classe fournit plusieurs méthodes pour supprimer des éléments tels que remove() supprime les éléments d'une séquence tandis que la méthode removeFirst() la méthode supprime les éléments du début de LInkedLIst et removeLast() La méthode supprime les éléments de la fin de LInkedList. Nous pouvons utiliser ces méthodes selon les besoins. Voir l'exemple où nous avons utilisé toutes ces méthodes.

import java.util.LinkedList;
/* 
 * Code example to create LinkedList and elements in Java
 */
public class JExercise {
	public static void main(String[] args) {
		LinkedList<String> students = new LinkedList<String>();
		students.add("Kunal");
		students.add("Rohan");
		students.add("David");
		System.out.println(students);
		// Remove first element
		students.removeFirst();
		System.out.println(students);
		// Remove from specified index
		students.remove(1);
		System.out.println(students);
		// Remove last element
		students.removeLast();
		System.out.println(students);

	}
}

Sortie :

[Kunal, Rohan, David]
[Rohan, David]
[Rohan]
[]
 

Exemple :Accéder aux éléments et trouver la taille de la liste liée

Comme ajouter et supprimer des méthodes, LinkedList La classe fournit également plusieurs méthodes d'accessibilité, telles que get() obtient les éléments dans une séquence tandis que getFirst() la méthode retourne les éléments du début de LInkedLIst et getLast() La méthode renvoie les éléments à partir de la fin de LInkedList. Nous pouvons utiliser ces méthodes selon les besoins. Voir l'exemple où nous avons utilisé toutes ces méthodes.

import java.util.LinkedList;
/* 
 * Code example to create LinkedList and Access elements
 */
public class JExercise {
	public static void main(String[] args) {
		LinkedList<String>students = new LinkedList<String>();
		students.add("Kunal");
		students.add("Rohan");
		students.add("David");
		System.out.println(students);
		System.out.println(students.size());
		// Get first element
		String fName = students.getFirst();
		System.out.println(fName);
		// Get last element
		String lName = students.getLast();
		System.out.println(lName);
		// Get element of specified index
		System.out.println(students.get(1));
	}
}

Sortie :

[Kunal, Rohan, David]
3
Kunal
David
Rohan
 

Exemple :Parcourir LinkedList

Pour parcourir tous les éléments de la LinkedList, nous pouvons utiliser n'importe quelle boucle telle que la boucle for, la boucle for-each, etc. Voir, dans l'exemple ci-dessous, nous avons utilisé les deux pour parcourir la LinkedList.

import java.util.LinkedList;
/* 
 * Code example to create LinkedList and Traverse it
 */
public class JExercise {
	public static void main(String[] args) {
		LinkedList<String> students = new LinkedList<String>();
		students.add("Kunal");
		students.add("Rohan");
		students.add("David");
		// Traversing using for loop
		System.out.println("Traversing using for loop");
		for (int i = 0; i < students.size(); i++) {
			System.out.println(students.get(i));
		}
		// Traversing using for-each loop
		System.out.println("\nTraversing using for-each loop");
		for(String name: students) {
			System.out.println(name);

		}
	}
}

Sortie :

Traversée en boucle for
Kunal
Rohan
David

Traversée à l'aide de la boucle for-each
Kunal
Rohan
David
 

Exemple :Traversée à l'aide d'Iterator

Iterator est une interface dans le framework Collection qui donne une fonctionnalité d'itération à toutes les classes d'implémentation de collection telles que ArrayList, LInkedList, etc. 

import java.util.Iterator;
import java.util.LinkedList;
/* 
 * Code example to create LinkedList
 */
public class JExercise {
	public static void main(String[] args) {
		LinkedList<String> students = new LinkedList<String>();
		students.add("Kunal");
		students.add("Rohan");
		students.add("David");
		// Traversing using iterator
		System.out.println("Traversing using Iterator");
		Iterator<String> itr = students.iterator();
		while(itr.hasNext()) {
			System.out.println(itr.next());
		}
	}
}

Sortie :

Traversée à l'aide d'Iterator
Kunal
Rohan
David
 

Exemple :Modification d'éléments LinkedList

La classe LinkedList fournit une autre méthode set() qui est utilisée pour modifier n'importe quel élément de la LInkedList. Cette méthode prend deux arguments, l'un est l'index et le second est la valeur. Ainsi, la valeur sera remplacée à l'emplacement d'index spécifié. Voir l'exemple ci-dessous.

import java.util.LinkedList;
/* 
 * Code example to create LinkedList
 */
public class JExercise {
	public static void main(String[] args) {
		LinkedList<String> linkedList = new LinkedList<String>();
		linkedList.add("Sohan");
		linkedList.add("Mohan");
		linkedList.add("Mac");
		linkedList.add("David");
		System.out.println(linkedList);
		// Modify element
		linkedList.set(2,"Shubham");
		System.out.println(linkedList);
		linkedList.set(3, "Jack");
		System.out.println(linkedList);
		// Get size of linkedlist
		int size = linkedList.size();
		System.out.println(size);
	}
}

Sortie :

[Sohan, Mohan, Mac, David]
[Sohan, Mohan, Shubham, David]
[Sohan, Mohan, Shubham, Jack]
4
 


Balise Java