728x90
/* LinkedList란?*/
ArrayList는 내부 배열에 객체를 저장하지만, LinkedList는 인접 객체를 체인처럼 연결해서 관리한다.
LinkedList의 경우 삭제/삽입의 시간복잡도가 O(1)이다.
/* 메소드 */
package Collections;
import java.util.*;
import java.io.*;
public class LearnLinkedList {
public static void main(String[] args){
List<Integer> list = new LinkedList<>();
list.add(1);
list.add(2);
list.add(2,3); // index 2에 3을 추가
System.out.println(list.toString());
// [1, 2, 3]
list.remove(1);
list.remove(list.indexOf(3)); // 3의 index를 찾아서 삭제
System.out.println(list.toString());
// [1]
System.out.println(list.get(0)); //0번 인덱스의 값
// 1
System.out.println(list.size()); //리스트의 크기
// 1
System.out.println(list.contains(1)); //리스트에 1이 있는지 확인
}
}
/* 사용권장 */
LinkedList 사용 권장:
- 빈번한 삽입 및 삭제가 필요할 때: LinkedList는 내부적으로 이중 연결 리스트를 사용하기 때문에, 리스트의 중간에 요소를 추가하거나 삭제하는 작업이 빠릅니다. 각 요소는 앞뒤 요소와의 연결만 변경하면 되기 때문입니다.
- 메모리 사용이 더 유동적일 필요가 있을 때: LinkedList는 요소를 추가할 때마다 새로운 노드를 생성하고, 요소를 삭제할 때는 해당 노드를 가비지 컬렉터에게 넘깁니다. 따라서, 사용되지 않는 메모리를 더 빠르게 회수할 수 있습니다.
728x90
'자바' 카테고리의 다른 글
[Java] equals 와 hashCode - 객체 일 경우 (0) | 2024.03.17 |
---|---|
[JAVA] 불변 객체 & 불변 클래스 (0) | 2024.03.13 |
[JAVA] 벡터 Vector (0) | 2024.02.06 |
[JAVA] 컬렉션 - ArrayList (0) | 2024.02.05 |
[Java] Predicate 인터페이스 (1) | 2023.12.20 |