logo

Kiedy używać ArrayList i LinkedList w Javie

ArrayList zapewnia stały czas operacji wyszukiwania, dlatego lepiej jest używać ArrayList, jeśli wyszukiwanie jest operacją częstszą niż operacja dodawania i usuwania. LinkedList zapewnia stały czas operacji dodawania i usuwania. Dlatego do manipulacji lepiej jest używać LinkedList.

ArrayList ma złożoność czasową O(1), aby uzyskać dostęp do elementów za pomocą metod get i set.

LinkedList ma złożoność czasową O(n/2) dostępu do elementów.

Klasa LinkedLinked implementuje również interfejs Deque, dzięki czemu można uzyskać funkcjonalność kolejki dwustronnej w LinkedList. Klasa ArrayList nie implementuje interfejsu Deque.

W przypadku ArrayList lepiej jest uzyskać dostęp do danych, podczas gdy LinkedList lepiej jest manipulować danymi. Obie klasy implementują interfejs List.

Przykład listy tablic

 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); } } } 

Wyjście:

 Traversing ArrayList... ankit peter mayank 

Przykład połączonej listy

 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); } } 

Wyjście:

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