728x90
LinkedList
ArrayList와 달리 index와 무관하게 불연속적으로 존재하는 데이터의 연결
배열의 단점으로는 크게 두가지가 있는데
첫째로는 배열의 길이를 미리 정해두어 크기를 변경하기 번거롭다는 것과,
둘째로는 비순차적인 데이터의 추가 및 삭제시 시간이 많이 소모된다는 것이다.
이러한 단점을 보완하기 위해 나온것이 LinkedList이다.
ArrayList와 LinkedList의 속도 비교
순차적 추가/삭제 | 중간 추가/삭제 | 검색 | |
ArrayList | 빠름 | 느림 | 빠름 |
LinkedList | 느림 | 빠름 | 느림 |
LinkedList 값 추가 / 삭제
LinkedList<String> ll = new LinkedList<String>();
ll.addFirst("A");
ll.addFirst("B");
ll.addFirst("C");
ll.addFirst("D");
System.out.println(ll);
ll.removeLast();
System.out.println(ll);
- removeLast( ) : 배열과 같은 컬렉션의 마지막 값을 제거
[실행결과]
[D, C, B, A]
[D, C, B]
예제 1.
<ArrayList와 LinkedList 중간 추가/삭제 속도 비교>
List<String> test1 = new ArrayList<String>();
List<String> test2 = new LinkedList<String>();
long startTime;
long endTime;
startTime = System.nanoTime();
for (int i = 0; i < 10000; i++) {
test1.add(0, String.valueOf(i));
}
endTime = System.nanoTime();
System.out.println("ArrayList걸린 시간 : " + (endTime - startTime));
startTime = System.nanoTime();
for (int i = 0; i < 10000; i++) {
test2.add(0, String.valueOf(i));
}
endTime = System.nanoTime();
System.out.println("LinkedList걸린 시간 : " + (endTime - startTime));
- System.nanoTime( ) : 시스템 시간과 무관하게 기준 시점에서부터 경과시간을 측정 (ns단위)
[실행결과]
ArrayList걸린 시간 : 4879900
LinkedList걸린 시간 : 1548100
실행결과를 통해 중간 추가/삭제 속도는 ArrayList가 LinkedList보다 느린 것을 확인할 수 있다.
'JAVA' 카테고리의 다른 글
맵 (Map) (0) | 2021.07.26 |
---|---|
HashSet (0) | 2021.07.22 |
ArrayList (0) | 2021.07.22 |
컬렉션 (Collection) (0) | 2021.07.20 |
제네릭 (Generic) (0) | 2021.07.20 |