MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Clasa LinkedList

Clasa generalizată LinkedList<E> reprezintă o structură de date sub forma unei liste înlănțuite. Ea moștenește clasa AbstractSequentialList și implementează interfețele List, Deque și Queue. Astfel, combină funcționalitatea unei liste și a unei cozi.

Clasa LinkedList are următorii constructori:

  • LinkedList(): creează o listă goală
  • LinkedList(Collection<? extends E> col): creează o listă în care adaugă toate elementele colecției col

LinkedList conține toate metodele definite în interfețele List, Queue, Deque. Câteva dintre ele:

  • addFirst() / offerFirst(): adaugă un element la începutul listei
  • addLast() / offerLast(): adaugă un element la sfârșitul listei
  • removeFirst() / pollFirst(): elimină primul element din începutul listei
  • removeLast() / pollLast(): elimină ultimul element din sfârșitul listei
  • getFirst() / peekFirst(): obține primul element
  • getLast() / peekLast(): obține ultimul element

Să examinăm utilizarea unei liste înlănțuite:

import java.util.LinkedList;

public class Program{
     
   public static void main(String[] args) {
         
       LinkedList<String> states = new LinkedList<String>();
         
       // adăugăm în listă câteva elemente
       states.add("Germany");
       states.add("France");
       states.addLast("Great Britain"); // adăugăm la sfârșitul listei
       states.addFirst("Spain"); // adăugăm la începutul listei
       states.add(1, "Italy"); // adăugăm un element la indexul 1
       
       System.out.printf("Lista are %d elemente \n", states.size());
       System.out.println(states.get(1));
       states.set(1, "Portugal");
       for(String state : states){
         
           System.out.println(state);
       }
       // verificăm dacă lista conține un element
       if(states.contains("Germany")){
         
           System.out.println("Lista conține Germany");
       }
         
       states.remove("Germany");
       states.removeFirst(); // eliminarea primului element
       states.removeLast(); // eliminarea ultimului element
         
       LinkedList<Person> people = new LinkedList<Person>();
       people.add(new Person("Mike"));
       people.addFirst(new Person("Tom"));
       people.addLast(new Person("Nick"));
       people.remove(1); // eliminarea celui de-al doilea element
         
       for(Person p : people){
         
           System.out.println(p.getName());
       }
       Person first = people.getFirst();
       System.out.println(first.getName()); // afișarea primului element
   }
}
class Person{
     
   private String name;
   public Person(String value){
         
       name = value;
   }
   String getName(){return name;}
}

Aici se creează și se utilizează două liste: una pentru șiruri de caractere și una pentru obiectele clasei Person. În plus față de metodele addFirst/removeLast și altele, avem acces la metodele standard definite în interfața Collection: add(), remove, contains, size și altele.

Astfel, putem folosi metode diferite pentru aceeași acțiune. De exemplu, adăugarea la începutul listei poate fi făcută astfel: states.addFirst("Spain");, sau astfel: states.add(0, "Spain");.

← Lecția anterioară Lecția următoare →