티스토리 뷰
package practice;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class ArrayLinkedListTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
//각각의 삽입, 삭제 메소드의 시간을 측정하는 프로그램
ArrayList al = new ArrayList(1000000);
LinkedList ll = new LinkedList();
System.out.println("== 순차적으로 추가하기 ==");
System.out.println("ArrayList : " + add1(al));
System.out.println("LinkedList : " + add1(ll));
System.out.println();
System.out.println("= 중간에 추가하기 =");
System.out.println("ArrayList : " + add2(al));
System.out.println("LinkedList : " + add2(ll));
System.out.println();
System.out.println("= 중간에 삭제하기 =");
System.out.println("ArrayList : " + remove2(al));
System.out.println("LinkedList : " + remove2(ll));
System.out.println();
System.out.println("= 순차적으로 삭제하기 =");
System.out.println("ArrayList : " + remove1(al));
System.out.println("LinkedList : " + remove1(ll));
}
private static long add1(List list) {
// 순차적으로 추가하기
long start = System.currentTimeMillis();
for (int i = 0; i < 100000; i++)
list.add(i + "");
long end = System.currentTimeMillis();
return end - start;
}
private static long add2(List list) {
// 중간에 추가하기
long start = System.currentTimeMillis();
for (int i = 0; i < 1000; i++) {
list.add(500 + "X");
// 인덱스 500 위치에 객체 삽입
}
long end = System.currentTimeMillis();
return end - start;
}
private static long remove1(List list) {
// 순차적으로 삭제하기
long start = System.currentTimeMillis();
for (int i = list.size() - 1; i > 0; i--){
list.remove(i);
//재배치를 예방하기 위해서 인덱스의 뒤부터 삭제한다.
}
long end = System.currentTimeMillis();
return end - start;
}
private static long remove2(List list) {
// 중간에서 삭제하기
long start = System.currentTimeMillis();
for (int i = 0; i < 1000; i++)
list.remove(i);
long end = System.currentTimeMillis();
return end - start;
}
}
결과 :
== 순차적으로 추가하기 ==
ArrayList : 61
LinkedList : 112
= 중간에 추가하기 =
ArrayList : 0
LinkedList : 0
= 중간에 삭제하기 =
ArrayList : 95
LinkedList : 6
= 순차적으로 삭제하기 =
ArrayList : 3
LinkedList : 5
실행결과
순차 삽입은 ArrayList가
중간 삭제는 LinkedList가 실행시간이 더 짧았고
나머지 중간 삽입과 순차 삭제는 크게 차이가 없는 것으로 나타났다.
(각각 LinkedList, ArrayList가 아주 약간 더 빠르다 - 사이즈가 더 큰 경우에는 차이가 크게 벌어 질 수 있겠다.)
'java,web study > 3주차 (7월 15일 ~21일)' 카테고리의 다른 글
IteratorEx1 (0) | 2013.07.18 |
---|---|
StackQueueEx (0) | 2013.07.18 |
깊은 복사와 얕은 복사 (0) | 2013.07.18 |
VectorEx (0) | 2013.07.18 |
ArrayListEx2 (0) | 2013.07.18 |