자바
컬렉션 프레임워크 - LinkedList
망재이
2023. 1. 26. 21:45
- 배열을 이용하게 되면 구조가 간단하고 사용하기 쉬우며 데이터를 불러오는데 걸리는 시간이 가장 빠르다는 장점이 있다.
- 하지만 큰 단점도 있다.
- 크기를 변경할 수 없다. - 크기를 바꾸려면 새로운 배열을 생성해서 데이터를 복사해야 한다.
- 비순차적인 데이터의 추가 또는 삭제에 시간이 많이 걸린다.
=====> 단점을 보안하고자 나온게 LinkedList!
- List인터페이스를 구현했기 때문에 ArrayList와 내부구현방법만 다를뿐 메소드의 종류와 기능은 거의 같다.
- 둘의 성능차이를 예제를 통해서 확인해보자
package collection;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class Ex_02_LinkedList
{
public static long add1(List list) { // 순차적으로 추가해주기
long start = System.currentTimeMillis();
for(int i=0;i<1000000;i++) {
list.add(i+"");
}
long end = System.currentTimeMillis();
return end - start;
}
public static long add2(List list) { // 중간에서 추가하기
long start = System.currentTimeMillis();
for(int i=0;i<10000;i++) {
list.add(500,"X");
}
long end = System.currentTimeMillis();
return end - start;
}
public 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;
}
public static long remove2(List list) { // 순차적으로 삭제하기
long start = System.currentTimeMillis();
for(int i=0;i<10000;i++) {
list.remove(i);
}
long end = System.currentTimeMillis();
return end - start;
}
public static void main(String[] args)
{
//추가할 데이터의 개수를 고려하여 충분히 잡기.
ArrayList al = new ArrayList(2000000);
LinkedList ll = new LinkedList();
System.out.println();
System.out.println("ArrayList : "+add1(al));
System.out.println("ArrayList : "+add1(ll));
//arraylist가 걸리는 시간이 더 짧다.
System.out.println();
System.out.println("ArrayList : "+add2(al));
System.out.println("ArrayList : "+add2(ll));
//linkedlist가 걸리는 시간이 더 짧다.
System.out.println();
System.out.println("ArrayList : "+remove1(al));
System.out.println("ArrayList : "+remove2(ll));
//linkedlist가 걸리는 시간이 더 짧다.
System.out.println();
System.out.println("ArrayList : "+remove2(al));
System.out.println("ArrayList : "+remove2(ll));
//arraylist가 걸리는 시간이 더 짧다.
}
}
※ 결론 ※
순차적으로 추가/삭제하는 경우에는 ArrayList가 LinkedList보다 빠르다.
중간 데이터를 추가/삭제하는 경우에는 LinkedList가 ArrayList보다 빠르다.
728x90