열심히 살아나갈 사람

Java에서 연결 리스트(LinkedList)는 java.util 패키지의 일부로 제공되는 클래스입니다. 이 클래스는 Doubly Linked List, 즉 이중 연결 리스트를 구현한 것으로 각 노드가 이전 노드와 다음 노드를 모두 참조하고 있습니다.

LinkedList 클래스의 주요 메소드들:

  • void add(int index, E element): 지정한 위치에 주어진 요소를 삽입합니다.
  • void addFirst(E e): 리스트의 처음에 주어진 요소를 삽입합니다.
  • void addLast(E e): 리스트의 마지막에 주어진 요소를 삽입합니다.
  • E get(int index): 지정한 위치의 요소를 반환합니다.
  • E getFirst(): 리스트의 첫 번째 요소를 반환합니다.
  • E getLast(): 리스트의 마지막 요소를 반환합니다.
  • int indexOf(Object o): 주어진 객체가 리스트에 처음으로 나타나는 위치를 반환합니다.
  • E remove(int index): 지정한 위치의 요소를 제거하고, 그 요소를 반환합니다.
  • boolean remove(Object o): 주어진 객체를 리스트에서 제거합니다.
  • E set(int index, E element): 지정한 위치의 요소를 주어진 요소로 바꿉니다.

LinkedList의 특징:

LinkedList는 연결 리스트의 특성 상, 새로운 요소의 삽입이나 기존 요소의 삭제가 빠른 편입니다. 하지만 인덱스를 기반으로 한 접근(예: get(int index))은 느릴 수 있습니다. 왜냐하면 리스트의 처음부터 요소를 하나씩 살펴봐야 하기 때문입니다.

Arraylist와 비교했을 때, LinkedList는 요소의 삽입, 삭제가 빈번하게 발생하는 경우나 요소의 개수가 빈번하게 변하는 경우에 유리합니다. 그래서 스택, 큐, 덱 등의 자료구조를 구현할 때 주로 사용됩니다.

 

다음은 Java에서의 Linked List를 생성하고 사용하는 기본적인 예시입니다:

import java.util.LinkedList;

public class Main {
    public static void main(String[] args) {
        LinkedList<String> animals = new LinkedList<>();

        // 요소 추가
        animals.add("Dog");
        animals.add("Cat");
        animals.add("Cow");
        System.out.println(animals);  // 출력: [Dog, Cat, Cow]

        // 첫 번째 위치에 요소 추가
        animals.addFirst("Elephant");
        System.out.println(animals);  // 출력: [Elephant, Dog, Cat, Cow]

        // 마지막 위치에 요소 추가
        animals.addLast("Zebra");
        System.out.println(animals);  // 출력: [Elephant, Dog, Cat, Cow, Zebra]

        // 요소 접근
        System.out.println(animals.get(0)); // 출력: Elephant
        
        System.out.println(animals.get(4)); // 출력: Zebra
        
        String firstAnimal = animals.getFirst();
        System.out.println(firstAnimal);  // 출력: Elephant

        String lastAnimal = animals.getLast();
        System.out.println(lastAnimal);  // 출력: Zebra

        // 요소 삭제
        animals.removeFirst();
        System.out.println(animals);  // 출력: [Dog, Cat, Cow, Zebra]

        animals.removeLast();
        System.out.println(animals);  // 출력: [Dog, Cat, Cow]
    }
}

위의 코드에서는 LinkedList 클래스의 주요 메소드들을 사용하여 리스트에 요소를 추가하거나 삭제하고, 특정 요소에 접근하는 방법을 보여주고 있습니다.

 

대부분의 경우에는 데이터의 조회가 삽입이나 삭제보다 더 자주 발생하고, 이런 작업들은 대게 리스트의 중간이나 끝에서 이루어지는 경우가 많습니다. 따라서 이런 상황에서는 인덱스를 통한 빠른 접근이 가능한 ArrayList가 더 효율적입니다.

profile

열심히 살아나갈 사람

@쿼리_

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!