Java LinkedList

java linkedlist

java 集合框架java 集合框架

链表(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()                
相关文章