Java 中的双向链表

Hiten Kanwar 2023年10月12日
Java 中的双向链表

在链表中,每个元素都作为一个单独的对象,具有数据部分和地址部分。它不使用具有传染性的内存位置来存储数据。双向链表存储前一个节点和下一个节点的地址。具有两个地址节点允许双向链表在两个方向上遍历。

本教程将讨论 Java 中的链表。

在 Java 中,链表类是 Java 集合框架的一部分,它提供链表数据结构的功能,充当双向链表。

这里的每个元素都充当一个节点,由 3 个值组成,即 PrevNextData,位于一个位置。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。

在这里,第一个节点的数据为 apple,它的前一个节点为空值,其后节点为橙色地址。类似地,数据为 orange 的第二个元素的前一个地址是 apple,下一个是 mango 的地址。

每当添加新元素时,PrevNext 地址都会在内部自动更新。

get() 方法用于访问链表中的元素,链表从头到元素进行迭代。我们还有 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 中的双向链表。

相关文章 - Java Linked List