반응형
public static void main(String[] args) {
ArrayList arrayList = new ArrayList();
LinkedList linkedList = new LinkedList();
// ArrayList add
long startTime = System.nanoTime();
for (int i = 0; i < 100000; i++) {
arrayList.add(i);
}
long endTime = System.nanoTime();
long duration = endTime - startTime;
System.out.println("ArrayList add: " + duration);
// LinkedList add
startTime = System.nanoTime();
for (int i = 0; i < 100000; i++) {
linkedList.add(i);
}
endTime = System.nanoTime();
duration = endTime - startTime;
System.out.println("LinkedList add: " + duration);
// ArrayList get
startTime = System.nanoTime();
for (int i = 0; i < 10000; i++) {
arrayList.get(i);
}
endTime = System.nanoTime();
duration = endTime - startTime;
System.out.println("ArrayList get: " + duration);
// LinkedList get
startTime = System.nanoTime();
for (int i = 0; i < 10000; i++) {
linkedList.get(i);
}
endTime = System.nanoTime();
duration = endTime - startTime;
System.out.println("LinkedList get: " + duration);
// ArrayList remove
startTime = System.nanoTime();
for (int i = 9999; i >=0; i--) {
arrayList.remove(i);
}
endTime = System.nanoTime();
duration = endTime - startTime;
System.out.println("ArrayList remove: " + duration);
// LinkedList remove
startTime = System.nanoTime();
for (int i = 9999; i >=0; i--) {
linkedList.remove(i);
}
endTime = System.nanoTime();
duration = endTime - startTime;
System.out.println("LinkedList remove: " + duration);
}
위 코드는 자바의 ArrayList와 LinkedList로
0부터 10만까지 삽입, 0부터 1만까지 값 호출,
마지막으로 9999부터 0까지 list 값을 삭제하는 코드인데
실제 실행해 보면
ArrayList는 값을 가져오는 get() 메소드를 수행 시 LinekdList보다 훨씬 빠르며
LinkedList는 값을 추가하거나 삭제하는 add(), remove() 메소드 수행 시 ArrayList보다 훨씬 빠르다
이제 왜 이러는지에 대해 알아보면
ArrayList는 배열과 같은 구조기 때문에 특정 값을 가져올 때에는
배열을 쭉 지나가면 되므로 매우 빠르다
반면 값을 추가하거나 삭제할 때에는
특정 값을 지우고 뒤의 값을 모두 한칸씩 땡겨오거나
특정 값을 추가하고 뒤의 값을 모두 한칸씩 미는 식으로 진행하기 때문에
대량의 추가/삭제에 있어서 매우 느리다
LinkedList는 내 전 배열 인덱스의 값과 다음 배열 인덱스의 값만 알고있기 때문에
추가 삭제시에는 ArrayList보다 훨씬 빠르다
다만 이렇게 하나하나 찾아가는 구조기 때문에 대량검색 시에는 ArrayList보다 훨씬 느리다
결론으로 돌아가보자면
ArrayList는 검색이 LinkedList보다 훨씬 빠르므로 대량의 데이터를 넣어놓고 검색할 때 주로 사용한다
LinkedList는 삽입, 삭제가 ArrayList보다 훨씬 빠르므로 대량의 데이터를 삽입, 삭제할 때 주로 사용한다
반응형
'Language > Java' 카테고리의 다른 글
자바 List 정렬, 역정렬 방법 및 예제 (0) | 2019.11.25 |
---|---|
자바 List 정의부터 출력까지 (0) | 2019.11.25 |
자바 static 변수, 메소드 예제 및 사용이유 (0) | 2019.11.18 |
자바 배열 선언 및 초기화 방법 및 예제 (0) | 2019.11.18 |
자바 다형성(Polyporhism)이란? & 예제 (0) | 2019.11.12 |
댓글