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");.