Java에서 ArrayList와 LinkedList의 차이점
ArrayList 와 LinkedList 는 모두 List 인터페이스를 구현하지만 차이점은 무엇입니까? ArrayList와 LinkedList의 주요 차이점은 확장 가능한 배열을 사용하여 구현되는 ArrayList에 있습니다. ArrayList에 더 많은 항목이 추가되면 크기가 동적으로 증가합니다. ArrayList는 본질적으로 array.
LinkedList 는 연결된 목록으로 구현되므로 이러한 추가 및 제거 성능은 ArrayList보다 좋지만 get() 및 set() 메서드에는 좋지 않습니다.
div>
이 기사에서는 LinkedList와 ArrayList의 몇 가지 차이점을 살펴보고 ArrayList 대신 LinkedList를 언제 어디서 사용해야하는지 이해하려고 노력할 것입니다.
ArrayList 대 LinkedList
LinkedList 와 ArrayList 의 모든 차이점에는 배열과 LinkedList (연결된 목록)의 차이점 인 소스가 있습니다.
1) 이후 ArrayList에서 검색하는 것은 요소의 인덱스를 기반으로 하므로 매우 빠릅니다. get(인덱스) O(1)의 복잡성을 가지지만 모든 요소를 오프셋해야 하기 때문에 제거 비용이 많이 듭니다. LinkedList의 경우 항목에 직접 액세스 할 수 없으며 항목을 검색하려면 전체 목록을 살펴 봐야하며 복잡성은 O (n).
2)와 같습니다. LinkedList에 항목의 크기를 조정하고 추가 할 때 위험이 없고 복잡성이 O(1)과 같기 때문에 ArrayList에 비해 LinkedList에서 삽입이 쉽습니다. ArrayList 는 최악의 경우 O (n)의 복잡성으로 모든 요소를 이동합니다.
3) 삭제는 삽입과 같으며 ArrayList.
4보다 LikedList에서 더 좋습니다. LinkedList 는 ArrayList 에서 각 인덱스가 현재 객체에 연결되어 있기 때문에 ArrayList 보다 더 많은 메모리를 가지고 있습니다. 그러나 LinkedList의 경우 각 노드는 다음 및 이전 노드의 요소 및 주소와 연결됩니다.
1) 응용 프로그램에는 임의 액세스가 필요하지 않습니다. 이 작업은 전체 목록을 살펴보는 작업으로 구성되기 때문에 이 경우
2) 응용 프로그램에는 복구보다 삽입 및 제거가 더 많습니다. 이 두 작업은 동기화되지 않은 액세스가 필요한 이러한 상황에서 LikedList.
Use ArrayList in Java에서 더 빠릅니다. ArrayList는 빠르고 사용하기 쉽습니다.
1) 이후 ArrayList에서 검색하는 것은 요소의 인덱스를 기반으로 하므로 매우 빠릅니다. get(인덱스) O(1)의 복잡성을 가지지만 모든 요소를 오프셋해야 하기 때문에 제거 비용이 많이 듭니다. LinkedList의 경우 항목에 직접 액세스 할 수 없으며 항목을 검색하려면 전체 목록을 살펴 봐야하며 복잡성은 O (n).
2)와 같습니다. LinkedList에 항목의 크기를 조정하고 추가 할 때 위험이 없고 복잡성이 O(1)과 같기 때문에 ArrayList에 비해 LinkedList에서 삽입이 쉽습니다. ArrayList 는 최악의 경우 O (n)의 복잡성으로 모든 요소를 이동합니다.
3) 삭제는 삽입과 같으며 ArrayList.
4보다 LikedList에서 더 좋습니다. LinkedList 는 ArrayList 에서 각 인덱스가 현재 객체에 연결되어 있기 때문에 ArrayList 보다 더 많은 메모리를 가지고 있습니다. 그러나 LinkedList의 경우 각 노드는 다음 및 이전 노드의 요소 및 주소와 연결됩니다.
Java에서 LinkedList 및 ArraList를 사용하는 경우
분명히 LinkedList는 ArrayList처럼 인기가 없지만 경우에 따라 여전히 좋은 선택입니다.1) 응용 프로그램에는 임의 액세스가 필요하지 않습니다. 이 작업은 전체 목록을 살펴보는 작업으로 구성되기 때문에 이 경우
2) 응용 프로그램에는 복구보다 삽입 및 제거가 더 많습니다. 이 두 작업은 동기화되지 않은 액세스가 필요한 이러한 상황에서 LikedList.
Use ArrayList in Java에서 더 빠릅니다. ArrayList는 빠르고 사용하기 쉽습니다.
ArrayList의 예
ArrayList< 문자열> al = 새로운 ArrayList< 문자열> ();
al.add("a");
al.add("c");
al.add("e");
al.add("z");
al.add("t");
al.add("m");
for(문자열 s: e){
System.out.println(e);
}
LinkedList 예제
LinkedList< 정수> llist = 새로운 LinkedList< 정수> ();
llist.add(8);
llist.add(9);
llist.add(5);
llist.add(2);
llist.add(6);
반복자< 정수> 그것 = llist.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
ArrayList 및 LinkedList의 성능
두 목록의 시간 복잡도: