728x90
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가 더 효율적입니다.
728x90
'Java > Data Structure(Java)' 카테고리의 다른 글
Java에서의 해시(Hash) 활용 (1) | 2023.12.07 |
---|---|
Java에서의 트리(Tree) 활용 (0) | 2023.12.06 |
Java에서의 큐(Queue) 활용 (1) | 2023.12.06 |
Java에서의 스택(Stack) 활용 (0) | 2023.12.06 |
Java에서의 동적 배열(ArrayList) 활용 (0) | 2023.12.05 |