728x90
같은 컬렉션이라서 사용방법은 동일하지만 내부 구조는 완전히 다름. ArrayList는 내부 배열에 객체를 저장하지만 LinkedList는 인접 객체를 체인처럼 연결함
LinkedList에서는 삽입이나 삭제를 하면 바로 앞뒤 링크만 변경하면 되므로 빈번한 객체 삭제와 삽입이 일어나는 곳에서는 ArrayList보다 좋은 성능을 보여준다
1. 생성
List<E> list = new LinkedList<E>();// E에 지정된 타입의 객체들만 저장
List<E> list = new LinkedList<>(); // E에 지정된 타입의 객체들만 저장
List list = new LinkedList(); // 모든 타입의 객체를 저장
2. 속도 비교
package ch15.sec02.exam03;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class LinkedListExample {
public static void main(String[] args) {
// ArrayList 컬렉션 객체 생성
List<String> list1 = new ArrayList<String>();
// LinkedList 컬렉션 객체 생성
List<String> list2 = new LinkedList<String>();
// 시작 시간과 끝 시간을 저장할 변수 선언
long startTime;
long endTime;
// ArrayList 컬렉션에 저장하는 시간 측정
startTime = System.nanoTime();
for (int i = 0; i < 10000; i++) {
list1.add(0, String.valueOf(i));
}
endTime = System.nanoTime();
System.out.printf("%-17s %8d ns \n", "ArrayList 걸린 시간: ", (endTime-startTime) ); // ArrayList 걸린 시간: 15344083 ns
// LinkedList 컬렉션에 저장하는 시간 측정
startTime = System.nanoTime();
for (int i = 0; i < 10000; i++) {
list2.add(0, String.valueOf(i));
}
endTime = System.nanoTime();
System.out.printf("%-17s %8d ns \n", "LinkedList 걸린 시간: ", (endTime-startTime) ); // LinkedList 걸린 시간: 2100125 ns
}
}
삽입하는데에 LinkedList의 속도가 더 빠른 것을 볼 수 있다
반응형
'Java 개념' 카테고리의 다른 글
Stack과 Queue (0) | 2023.08.23 |
---|---|
Collection - Set,Map (0) | 2023.08.23 |
Collection-ArrayList (0) | 2023.08.22 |
리스트 (0) | 2023.08.03 |
예외처리 (0) | 2023.08.01 |