본문 바로가기

자바

[JAVA] 컬렉션 - LinkedList

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