Java里存在链表。因为,链表是一种重要的数据结构,一种存放数据的方式,在程序设计中占有很重要的地位,Java的实现类LinkedList就可以实现链表。因此,Java里存在链表。
1、Java链表优势
Java语言比C和C++更容易实现链表结构。Java语言中的对象引用实际上是一个指针(这个指针均为概念上的意义,而非语言提供的数据类型),所以我们可以编写这样的类来实现链表中的结点。
Java中的List接口bai中有两个实现类:duArrayList和LinkedList。前者是使用数组实现,用索引来取数据是它的优势。后者是用双向链表实现,在插入和删除操作上占优势。具体实现已经封装好了,不用操心过多,具体动作都有具体的方法。
2、链表概念
链表(linked list):是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的。
链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作复杂。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O(1)。
链表的分类
- 单向链表,双向链表
- 带头链表,不带头链表
- 循环的,非循环的
3、构造方法:
构造语法 | 作用 |
---|---|
LinkedList() | 构造一个空列表 |
LinkedList(Collection<? extends E> c) | 按照集合的迭代器返回的顺序构造一个包含指定集合元素的列表。 |
public class MyLinkedList {
public ListNode head;
public void creatList(){
ListNode listNode1 = new ListNode(11);
ListNode listNode2 = new ListNode(22);
ListNode listNode3 = new ListNode(33);
ListNode listNode4 = new ListNode(44);
ListNode listNode5 = new ListNode(55);
this.head = listNode1;
listNode1.next = listNode2;
listNode2.next = listNode3;
listNode3.next = listNode4;
listNode4.next = listNode5;
}
}