728x90
★ LinkedList
- ArrayList와 사용법 아주 유사
- 내부 구조가 다르다 > 사용 용도가 다르다.
- 중간 데이터 추가/삭제
★ LinkedList 종류
- LinkedList : 단방향 탐색
- Double LinkedList : 양방향 탐색
- Double Circular LinkedList : 순환 탐색 > 자바의 LinkedList
- 소스코드
private static void m1() {
ArrayList<Integer> list1 = new ArrayList<Integer>();
list1.add(100);
list1.add(200);
list1.add(300);
System.out.println(list1.size());
System.out.println(list1.get(0));
System.out.println(list1.get(1));
System.out.println(list1.get(2));
LinkedList<Integer> list2 = new LinkedList<Integer>();
list2.add(100);
list2.add(200);
list2.add(300);
System.out.println(list2.size());
System.out.println(list2.get(0));
System.out.println(list2.get(1));
System.out.println(list2.get(2));
}
★ ArrayList vs LinkedList 속도 비교
private static void m2() {
//ArrayList vs LinkedList 속도 비교(능률)
ArrayList<Integer> list1 = new ArrayList<Integer>();
LinkedList<Integer> list2 = new LinkedList<Integer>();
long begin = 0, end = 0;
//1. 순차적으로 데이터 추가하기, Append
System.out.println("1. 순차적으로 데이터 추가하기, Append");
begin = System.currentTimeMillis();
for(int i=0; i<10000; i++) {
list1.add(i);
}
end = System.currentTimeMillis();
System.out.printf("ArrayList 작업 시간 : %,dms\n", end-begin);
//Linked List
begin = System.currentTimeMillis();
for(int i=0; i<10000; i++) {
list2.add(i);
}
end = System.currentTimeMillis();
System.out.printf("LinkedList 작업 시간 : %,dms\n", end-begin);
//2. 중간에 데이터 추가하기, Insert
System.out.println("2. 중간에 데이터 추가하기, Insert");
begin = System.currentTimeMillis();
for(int i=0; i<10000; i++) {
list1.add(0, i);
}
end = System.currentTimeMillis();
System.out.printf("ArrayList 작업 시간 : %,dms\n", end-begin);
//Linked List
begin = System.currentTimeMillis();
for(int i=0; i<10000; i++) {
list2.add(0, i);
}
end = System.currentTimeMillis();
System.out.printf("LinkedList 작업 시간 : %,dms\n", end-begin);
//3. 중간에 있는 데이터 삭제하기
System.out.println("3. 중간에 있는 데이터 삭제하기");
begin = System.currentTimeMillis();
for(int i=0; i<1000; i++) {
list1.remove(0);
}
end = System.currentTimeMillis();
System.out.printf("ArrayList 작업 시간 : %,dms\n", end-begin);
//Linked List
begin = System.currentTimeMillis();
for(int i=0; i<10000; i++) {
list2.remove(0);
}
end = System.currentTimeMillis();
System.out.printf("LinkedList 작업 시간 : %,dms\n", end-begin);
//4. 순차적인 데이터 삭제하기
System.out.println("4. 순차적인 데이터 삭제하기");
begin = System.currentTimeMillis();
for(int i=list1.size(); i<=0; i--) {
list1.remove(i);
}
end = System.currentTimeMillis();
System.out.printf("ArrayList 작업 시간 : %,dms\n", end-begin);
//Linked List
begin = System.currentTimeMillis();
for(int i=list2.size(); i<=0; i--) {
list2.remove(i);
}
end = System.currentTimeMillis();
System.out.printf("LinkedList 작업 시간 : %,dms\n", end-begin);
}
728x90
'자바' 카테고리의 다른 글
JAVA STEP 47. 함수형 인터페이스 (0) | 2023.03.02 |
---|---|
JAVA STEP 46. lambda (0) | 2023.02.28 |
JAVA STEP 44. File 입출력 예제 (0) | 2023.02.27 |
JAVA STEP 43. File 입출력 (0) | 2023.02.27 |
JAVA STEP 42. 재귀 메소드 (0) | 2023.02.27 |