logo

Quando utilizzare ArrayList e LinkedList in Java

ArrayList fornisce un tempo costante per l'operazione di ricerca, quindi è meglio utilizzare ArrayList se la ricerca è un'operazione più frequente rispetto all'operazione di aggiunta e rimozione. La LinkedList fornisce tempo costante per le operazioni di aggiunta e rimozione. Quindi è meglio usare LinkedList per la manipolazione.

ArrayList ha una complessità temporale O(1) per accedere agli elementi tramite i metodi get e set.

LinkedList ha una complessità temporale O(n/2) per accedere agli elementi.

La classe LinkedLinked implementa anche l'interfaccia Deque, in modo da poter ottenere la funzionalità della coda a doppia estremità in LinkedList. La classe ArrayList non implementa l'interfaccia Deque.

In una sorta, ArrayList è migliore per accedere ai dati mentre LinkedList è migliore per manipolare i dati. Entrambe le classi implementano l'interfaccia List.

Esempio di elenco di array

 import java.util.*; public class ListExample { public static void main(String[] args) { //ArrayList is better to store and view data List list=new ArrayList(); list.add('ankit'); list.add('peter'); list.add('mayank'); System.out.println('Traversing ArrayList...'); for(String s:list){ System.out.println(s); } } } 

Produzione:

 Traversing ArrayList... ankit peter mayank 

Esempio di lista collegata

 import java.util.*; public class ListExample2 { public static void main(String[] args) { //LinkedList is better to manipulate data List list=new LinkedList(); list.add('ankit'); list.add('peter'); list.add('mayank'); System.out.println('After adding: '+list); list.remove('peter'); System.out.println('After removing: '+list); list.set(1,'vivek'); System.out.println('After changing: '+list); } } 

Produzione:

 After adding: [ankit, peter, mayank] After removing: [ankit, mayank] After changing: [ankit, vivek]