Java LinkedList
java linkedlist
链表(linked list)是一种常见的基础数据结构,是一种线性表,但并不是按照线性的顺序存储数据,而是在每一个节点里存到下一个节点的地址。
链表可分为单向链表和双向链表。
一个单向链表包含两个值: 当前节点的值和一个指向下一个节点的链接。
一个双向链表有三个整数值: 数值、向后的节点链接、向前的节点链接。
java linkedlist(链表) 类似于 arraylist,是一种常用的数据容器。
与 arraylist 相比,linkedlist 的增加和删除对操作效率更高,而查找和修改的操作效率较低。
以下情况使用 arraylist :
- 频繁访问列表中的某一个元素。
- 只需要在列表末尾进行添加和删除元素操作。
以下情况使用 linkedlist :
- 你需要通过循环迭代来访问列表中的某些元素。
- 需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。
linkedlist 继承了 abstractsequentiallist 类。
linkedlist 实现了 queue 接口,可作为队列使用。
linkedlist 实现了 list 接口,可进行列表的相关操作。
linkedlist 实现了 deque 接口,可作为队列使用。
linkedlist 实现了 cloneable 接口,可实现克隆。
linkedlist 实现了 java.io.serializable 接口,即可支持序列化,能通过序列化去传输。
1. 创建链表
linkedlist 类位于 java.util 包中,使用前需要引入它,语法格式如下:
// 引入 linkedlist 类 import java.util.linkedlist; linkedlist<e> list = new linkedlist<e>(); // 普通创建方法 或者 linkedlist<e> list = new linkedlist(collection<? extends e> c); // 使用集合创建链表
创建 linkedlist 的范例:
// 引入 linkedlist 类 import java.util.linkedlist; public class yapftest { public static void main(string[] args) { linkedlist sites = new linkedlist(); sites.add("google"); sites.add("yapf"); sites.add("taobao"); sites.add("weibo"); system.out.println(sites); } }
以上范例,执行输出结果为:
[google, yapf, taobao, weibo]
更多的情况下我们使用 arraylist 访问列表中的随机元素更加高效,但以下几种情况 linkedlist 提供了更高效的方法。
2. 在列表开头添加元素
// 引入 linkedlist 类 import java.util.linkedlist; public class yapftest { public static void main(string[] args) { linkedlist sites = new linkedlist(); sites.add("google"); sites.add("yapf"); sites.add("taobao"); // 使用 addfirst() 在头部添加元素 sites.addfirst("wiki"); system.out.println(sites); } }
以上范例,执行输出结果为:
[wiki, google, yapf, taobao]
2. 在列表结尾添加元素
// 引入 linkedlist 类 import java.util.linkedlist; public class yapftest { public static void main(string[] args) { linkedlist sites = new linkedlist(); sites.add("google"); sites.add("yapf"); sites.add("taobao"); // 使用 addlast() 在尾部添加元素 sites.addlast("wiki"); system.out.println(sites); } }
以上范例,执行输出结果为:
[google, yapf, taobao, wiki]
3. 在列表开头移除元素
// 引入 linkedlist 类 import java.util.linkedlist; public class yapftest { public static void main(string[] args) { linkedlist sites = new linkedlist(); sites.add("google"); sites.add("yapf"); sites.add("taobao"); sites.add("weibo"); // 使用 removefirst() 移除头部元素 sites.removefirst(); system.out.println(sites); } }
以上范例,执行输出结果为:
[yapf, taobao, weibo]
4. 在列表结尾移除元素
// 引入 linkedlist 类 import java.util.linkedlist; public class yapftest { public static void main(string[] args) { linkedlist sites = new linkedlist(); sites.add("google"); sites.add("yapf"); sites.add("taobao"); sites.add("weibo"); // 使用 removelast() 移除尾部元素 sites.removelast()