Java 中的链表数组
LinkedList
是按定义顺序存储元素的顺序和线性数据结构。数据结构是 Collection
接口的一部分,存在于 java.util
包中。
链表也有元素存储在 node
部分。每个节点都有一个 data
部分用于元素存储,还有一个 pointer
用于保存下一个节点的地址。列表中的元素不存在于连续的内存位置。
在 Java 中使用传统数组演示链表数组
下面是使用循环创建链表数组的代码块。
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
LinkedList[] list = new LinkedList[5];
for (int i = 0; i < 5; i++) {
if (list[i] == null) {
list[i] = new LinkedList();
int temp = i;
for (int j = 0; j < temp + 1; j++) {
list[i].add(j);
}
}
System.out.print(list[i]);
}
}
}
在上面的块中,new LinkedList[5]
语句创建了一个链表。new 关键字调用类链表的公共构造函数。值 5
显示了数组的大小,因此我们创建了一个包含 5 个链表的数组。
在列表变量上,循环运行以在每个节点上实例化一个新的链表。因此,在整数值小于 5
的条件下应用 for
循环开始运行。在内部,它检查节点中的值是否为空
的条件;否则,将实例化一个新的 Linked List
节点。
同样,使用 for
循环来填充列表中的元素。add
方法用于将元素添加到列表的末尾。该方法来自 LinkedList
类并返回 boolean
值。如果 add
函数成功完成,它返回 true
,否则返回 false
。
类似地,迭代继续,每个节点的值都被链表填充。循环内部也会打印相同的内容,以检查节点中存在的元素。
输出:
[0][0, 1][0, 1, 2][0, 1, 2, 3][0, 1, 2, 3, 4]
使用 Java 中的构造函数演示链表数组
下面是使用 Java 8 特性和函数创建链表数组的代码块。
import java.util.ArrayList;
import java.util.LinkedList;
public class main {
public static void main(String[] args)
{
LinkedList list1 = new LinkedList<String>();
list1.add("l1_value1");
list1.add("l1_value2");
LinkedList list2 = new LinkedList();
list2.add("l2_value1");
list2.add("l2_value2");
LinkedList list3 = new LinkedList();
list3.add("l3_value1");
list3.add("l3_value2");
ArrayList<LinkedList> arrayList = new ArrayList<LinkedList>();
arrayList.add(list1);
arrayList.add(list2);
arrayList.add(list1);
arrayList.forEach(System.out::println);
System.out.println("Classname: " + arrayList.get(0).getClass());
}
}
在上面的代码块中,main
方法保存了代码执行的实际逻辑。
首先,使用 new
关键字创建一个链表。关键字调用 LinkedList
类的公共构造函数。字符串值被插入到列表中。同样,创建另外两个列表。
最后,一个数组列表被实例化。形成的列表变量被添加到数组列表实例中。列表实例的迭代使用 forEach
函数进行。此外,添加了带有方法引用运算符 ::
的 print
语句以显示数组列表中存在的实例类型的名称。
上面程序的输出如下所示。
[l1_value1, l1_value2]
[l2_value1, l2_value2]
[l1_value1, l1_value2]
Classname: class java.util.LinkedList
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedIn