La classe Java LinkedList utilitza una llista doblement enllaçada per emmagatzemar els elements. Proporciona una estructura de dades de llista enllaçada. Hereta la classe AbstractList i implementa les interfícies List i Deque.
Els punts importants sobre Java LinkedList són:
- La classe Java LinkedList pot contenir elements duplicats.
- La classe Java LinkedList manté l'ordre d'inserció.
- La classe Java LinkedList no està sincronitzada.
- A la classe Java LinkedList, la manipulació és ràpida perquè no cal que es produeixi cap canvi.
- La classe Java LinkedList es pot utilitzar com a llista, pila o cua.
Jerarquia de la classe LinkedList
Com es mostra al diagrama anterior, la classe Java LinkedList amplia la classe AbstractSequentialList i implementa les interfícies List i Deque.
un exemple d'un sistema operatiu de codi obert és
Llista doblement enllaçada
En el cas d'una llista doblement enllaçada, podem afegir o eliminar elements d'ambdós costats.
Declaració de classe LinkedList
Vegem la declaració de la classe java.util.LinkedList.
public class LinkedList extends AbstractSequentialList implements List, Deque, Cloneable, Serializable
Constructors de Java LinkedList
Constructor | Descripció |
---|---|
LinkedList() | S'utilitza per construir una llista buida. |
LinkedList(Col·lecció c) | S'utilitza per construir una llista que conté els elements de la col·lecció especificada, en l'ordre en què són retornats per l'iterador de la col·lecció. |
Mètodes de Java LinkedList
Mètode | Descripció |
---|---|
suma booleana (E e) | S'utilitza per afegir l'element especificat al final d'una llista. |
void add (índex int, element E) | S'utilitza per inserir l'element especificat a l'índex de posició especificat en una llista. |
booleà addAll(Col·lecció c) | S'utilitza per afegir tots els elements de la col·lecció especificada al final d'aquesta llista, en l'ordre en què són retornats per l'iterador de la col·lecció especificada. |
booleà addAll(Col·lecció c) | S'utilitza per afegir tots els elements de la col·lecció especificada al final d'aquesta llista, en l'ordre en què són retornats per l'iterador de la col·lecció especificada. |
booleà addAll(índex int, col·lecció c) | S'utilitza per afegir tots els elements de la col·lecció especificada, començant per la posició especificada de la llista. |
void addFirst (E e) | S'utilitza per inserir l'element donat al principi d'una llista. |
void addLast (E e) | S'utilitza per afegir l'element donat al final d'una llista. |
buit clar () | S'utilitza per eliminar tots els elements d'una llista. |
Clon d'objecte() | S'utilitza per retornar una còpia superficial d'una ArrayList. |
booleà conté (Objecte o) | S'utilitza per retornar true si una llista conté un element especificat. |
Iterador descendentIterator() | S'utilitza per retornar un iterador sobre els elements en un deque en ordre seqüencial invers. |
element E () | S'utilitza per recuperar el primer element d'una llista. |
E get(índex int) | S'utilitza per retornar l'element a la posició especificada en una llista. |
I getFirst() | S'utilitza per retornar el primer element d'una llista. |
I getLast() | S'utilitza per retornar l'últim element d'una llista. |
int indexOf(Objecte o) | S'utilitza per retornar l'índex en una llista de la primera ocurrència de l'element especificat, o -1 si la llista no conté cap element. |
int lastIndexOf(Objecte o) | S'utilitza per retornar l'índex en una llista de l'última ocurrència de l'element especificat, o -1 si la llista no conté cap element. |
ListIterator listIterator (índex int) | S'utilitza per retornar un iterador de llista dels elements en la seqüència adequada, començant a la posició especificada a la llista. |
oferta booleana (E e) | Afegeix l'element especificat com a darrer element d'una llista. |
oferta booleanaPrimer(E e) | Insereix l'element especificat al capdavant d'una llista. |
Oferta booleanaLast(E e) | Insereix l'element especificat al final d'una llista. |
E mira () | Recupera el primer element d'una llista |
E peekFirst() | Recupera el primer element d'una llista o retorna null si una llista està buida. |
E peekLast() | Recupera l'últim element d'una llista o retorna null si una llista està buida. |
Enquesta E () | Recupera i elimina el primer element d'una llista. |
E pollFirst() | Recupera i elimina el primer element d'una llista, o retorna null si una llista està buida. |
E pollLast() | Recupera i elimina l'últim element d'una llista, o retorna null si una llista està buida. |
I pop() | Obre un element de la pila representat per una llista. |
empenta de buit (E e) | Empeny un element a la pila representada per una llista. |
E elimina () | S'utilitza per recuperar i eliminar el primer element d'una llista. |
E elimina (índex int) | S'utilitza per eliminar l'element a la posició especificada en una llista. |
eliminar booleà (Objecte o) | S'utilitza per eliminar la primera ocurrència de l'element especificat en una llista. |
E removeFirst() | Elimina i retorna el primer element d'una llista. |
booleà removeFirstOccurrence (Objecte o) | S'utilitza per eliminar la primera ocurrència de l'element especificat en una llista (quan es recorre la llista de cap a final). |
E removeLast() | Elimina i retorna l'últim element d'una llista. |
booleà removeLastOccurrence (Objecte o) | Elimina l'última ocurrència de l'element especificat en una llista (quan es recorre la llista de cap a final). |
Conjunt E (índex int, element E) | Substitueix l'element a la posició especificada en una llista amb l'element especificat. |
Objecte[] toArray() | S'utilitza per retornar una matriu que conté tots els elements d'una llista en la seqüència adequada (des del primer fins a l'últim element). |
T[] toArray(T[] a) | Retorna una matriu que conté tots els elements en la seqüència adequada (des del primer fins a l'últim element); el tipus d'execució de la matriu retornada és el de la matriu especificada. |
mida int () | S'utilitza per retornar el nombre d'elements d'una llista. |
Exemple de Java LinkedList
import java.util.*; public class LinkedList1{ 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()); } } }
Output: Ravi Vijay Ravi Ajay
Exemple de Java LinkedList per afegir elements
Aquí, veiem diferents maneres d'afegir elements.
import java.util.*; public class LinkedList2{ public static void main(String args[]){ LinkedList ll=new LinkedList(); System.out.println('Initial list of elements: '+ll); ll.add('Ravi'); ll.add('Vijay'); ll.add('Ajay'); System.out.println('After invoking add(E e) method: '+ll); //Adding an element at the specific position ll.add(1, 'Gaurav'); System.out.println('After invoking add(int index, E element) method: '+ll); LinkedList ll2=new LinkedList(); ll2.add('Sonoo'); ll2.add('Hanumat'); //Adding second list elements to the first list ll.addAll(ll2); System.out.println('After invoking addAll(Collection c) method: '+ll); LinkedList ll3=new LinkedList(); ll3.add('John'); ll3.add('Rahul'); //Adding second list elements to the first list at specific position ll.addAll(1, ll3); System.out.println('After invoking addAll(int index, Collection c) method: '+ll); //Adding an element at the first position ll.addFirst('Lokesh'); System.out.println('After invoking addFirst(E e) method: '+ll); //Adding an element at the last position ll.addLast('Harsh'); System.out.println('After invoking addLast(E e) method: '+ll); } }
Initial list of elements: [] After invoking add(E e) method: [Ravi, Vijay, Ajay] After invoking add(int index, E element) method: [Ravi, Gaurav, Vijay, Ajay] After invoking addAll(Collection c) method: [Ravi, Gaurav, Vijay, Ajay, Sonoo, Hanumat] After invoking addAll(int index, Collection c) method: [Ravi, John, Rahul, Gaurav, Vijay, Ajay, Sonoo, Hanumat] After invoking addFirst(E e) method: [Lokesh, Ravi, John, Rahul, Gaurav, Vijay, Ajay, Sonoo, Hanumat] After invoking addLast(E e) method: [Lokesh, Ravi, John, Rahul, Gaurav, Vijay, Ajay, Sonoo, Hanumat, Harsh]
Exemple de Java LinkedList per eliminar elements
Aquí, veiem diferents maneres d'eliminar un element.
arquitectura de von neumann
import java.util.*; public class LinkedList3 { public static void main(String [] args) { LinkedList ll=new LinkedList(); ll.add('Ravi'); ll.add('Vijay'); ll.add('Ajay'); ll.add('Anuj'); ll.add('Gaurav'); ll.add('Harsh'); ll.add('Virat'); ll.add('Gaurav'); ll.add('Harsh'); ll.add('Amit'); System.out.println('Initial list of elements: '+ll); //Removing specific element from arraylist ll.remove('Vijay'); System.out.println('After invoking remove(object) method: '+ll); //Removing element on the basis of specific position ll.remove(0); System.out.println('After invoking remove(index) method: '+ll); LinkedList ll2=new LinkedList(); ll2.add('Ravi'); ll2.add('Hanumat'); // Adding new elements to arraylist ll.addAll(ll2); System.out.println('Updated list : '+ll); //Removing all the new elements from arraylist ll.removeAll(ll2); System.out.println('After invoking removeAll() method: '+ll); //Removing first element from the list ll.removeFirst(); System.out.println('After invoking removeFirst() method: '+ll); //Removing first element from the list ll.removeLast(); System.out.println('After invoking removeLast() method: '+ll); //Removing first occurrence of element from the list ll.removeFirstOccurrence('Gaurav'); System.out.println('After invoking removeFirstOccurrence() method: '+ll); //Removing last occurrence of element from the list ll.removeLastOccurrence('Harsh'); System.out.println('After invoking removeLastOccurrence() method: '+ll); //Removing all the elements available in the list ll.clear(); System.out.println('After invoking clear() method: '+ll); } }
Initial list of elements: [Ravi, Vijay, Ajay, Anuj, Gaurav, Harsh, Virat, Gaurav, Harsh, Amit] After invoking remove(object) method: [Ravi, Ajay, Anuj, Gaurav, Harsh, Virat, Gaurav, Harsh, Amit] After invoking remove(index) method: [Ajay, Anuj, Gaurav, Harsh, Virat, Gaurav, Harsh, Amit] Updated list : [Ajay, Anuj, Gaurav, Harsh, Virat, Gaurav, Harsh, Amit, Ravi, Hanumat] After invoking removeAll() method: [Ajay, Anuj, Gaurav, Harsh, Virat, Gaurav, Harsh, Amit] After invoking removeFirst() method: [Gaurav, Harsh, Virat, Gaurav, Harsh, Amit] After invoking removeLast() method: [Gaurav, Harsh, Virat, Gaurav, Harsh] After invoking removeFirstOccurrence() method: [Harsh, Virat, Gaurav, Harsh] After invoking removeLastOccurrence() method: [Harsh, Virat, Gaurav] After invoking clear() method: []
Exemple de Java LinkedList per invertir una llista d'elements
import java.util.*; public class LinkedList4{ public static void main(String args[]){ LinkedList ll=new LinkedList(); ll.add('Ravi'); ll.add('Vijay'); ll.add('Ajay'); //Traversing the list of elements in reverse order Iterator i=ll.descendingIterator(); while(i.hasNext()) { System.out.println(i.next()); } } }
Output: Ajay Vijay Ravi
Exemple de Java LinkedList: llibre
import java.util.*; class Book { int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } } public class LinkedListExample { public static void main(String[] args) { //Creating list of Books List list=new LinkedList(); //Creating Books Book b1=new Book(101,'Let us C','Yashwant Kanetkar','BPB',8); Book b2=new Book(102,'Data Communications & Networking','Forouzan','Mc Graw Hill',4); Book b3=new Book(103,'Operating System','Galvin','Wiley',6); //Adding Books to list list.add(b1); list.add(b2); list.add(b3); //Traversing list for(Book b:list){ System.out.println(b.id+' '+b.name+' '+b.author+' '+b.publisher+' '+b.quantity); } } }
Sortida:
101 Let us C Yashwant Kanetkar BPB 8 102 Data Communications & Networking Forouzan Mc Graw Hill 4 103 Operating System Galvin Wiley 6