Java의 이중 연결 목록

연결된 목록에서 모든 요소는 데이터 부분과 주소 부분이있는 별도의 개체로 작동합니다. 데이터를 저장하기 위해 전염성이있는 메모리 위치를 사용하지 않습니다. 이중 연결 목록은 이전 노드와 다음 노드의 주소를 저장합니다. 두 개의 주소 노드가 있으면 이중 연결 목록이 양방향으로 순회 할 수 있습니다.
이 자습서에서는 Java의 링크 된 목록에 대해 설명합니다.
Java에서 Linked List 클래스는 이중 링크 목록 역할을하는 Linked List 데이터 구조의 기능을 제공하는 Java Collections 프레임 워크의 일부입니다.
여기에서 각 요소는 단일 위치에서Prev
,Next
및Data
의 3 개 값으로 구성된 노드 역할을합니다. Prev
은 이전 요소의 주소를 저장하고Next
은 다음 요소의 주소를 저장하며Data
는 노드의 실제 데이터를 저장합니다.
예를 들면
import java.util.*;
public class ABC {
public static void main(String[] args) {
LinkedList<String> fruits = new LinkedList<>();
fruits.add("apple");
fruits.add("orange");
fruits.add("mango");
System.out.println("LinkedList: " + fruits);
}
}
출력:
LinkedList: [apple, orange, mango]
위의 예에서 우리는 Java의 Collections 프레임 워크를 통해 Linked List를 성공적으로 생성했습니다.
여기서 첫 번째 노드는 이전으로 null 값을 보유하고 다음과 같이 주황색 주소를 보유하는 apple
데이터를 가지고 있습니다. 마찬가지로 데이터가 orange
인 두 번째 요소는 이전과 같은 apple
의 주소와 다음과 같은 mango
의 주소를 갖습니다.
새 요소가 추가 될 때마다Prev
및Next
주소가 내부적으로 자동으로 업데이트됩니다.
get()
메소드는 처음부터 요소까지 반복되는 Linked List에서 요소에 액세스하는 데 사용됩니다. 구성 요소에 액세스하기위한listIterator()
메서드도 있습니다. next()
및previous()
함수는 목록을 양방향으로 탐색하는 데 도움이 될 수 있습니다.
또한set()
메소드를 사용하여 링크 된 목록 요소를 변경할 수 있습니다. remove()
함수는 요소를 삭제할 수 있습니다.
다음 예제에서는 이러한 기능 중 일부를 사용합니다.
import java.util.*;
public class ABC {
public static void main(String[] args) {
LinkedList<String> fruits = new LinkedList<>();
fruits.add("apple");
fruits.add("orange");
fruits.add("mango");
String str = fruits.listIterator(1).previous();
System.out.println("i like " + str);
}
}
출력:
i like apple
위의 예에서previous()
함수를 사용하여 인덱스 1의 요소 이전 값에 액세스했습니다.
또한 데이터 및 포인터 변수로 클래스를 생성하여 Java에서 이중 연결 목록을 시뮬레이션 할 수 있습니다.