티스토리 뷰

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
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함