ArrayList는 검색 작업에 일정한 시간을 제공하므로 추가 및 제거 작업보다 검색 작업이 더 빈번한 경우 ArrayList를 사용하는 것이 좋습니다. LinkedList는 추가 및 제거 작업에 일정한 시간을 제공합니다. 따라서 조작에는 LinkedList를 사용하는 것이 좋습니다.
ArrayList는 get 및 set 메서드를 통해 요소에 액세스하는 데 O(1) 시간 복잡도를 갖습니다.
LinkedList는 요소에 액세스하는 데 O(n/2) 시간 복잡도를 갖습니다.
LinkedLinked 클래스는 Deque 인터페이스도 구현하므로 LinkedList에서 이중 종료 대기열의 기능을 얻을 수 있습니다. ArrayList 클래스는 Deque 인터페이스를 구현하지 않습니다.
정렬적으로 ArrayList는 데이터에 액세스하는 것이 더 나은 반면 LinkedList는 데이터를 조작하는 것이 더 좋습니다. 두 클래스 모두 List 인터페이스를 구현합니다.
배열목록 예
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); } } }
산출:
Traversing ArrayList... ankit peter mayank
링크드리스트 예
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); } }
산출:
After adding: [ankit, peter, mayank] After removing: [ankit, mayank] After changing: [ankit, vivek]