Java LinkedList 链表


LinkedList

  • LinkedList 类扩展了 AbstractSequentialList 类并实现了 List 接口,方便元素添加、删除;
  • LinkedList 提供了一个连接列表的数据结构;
  • 在开发时,LinkedList集合也可以作为堆栈,队列的结构使用;

1. 构造方法

构造方法说明
LinkedList()建立一个空链接列表
LinkedList(Collection c)建立一个由 c 中元素初始化的连接列表

2. API

LinkedList 除了继承 List 接口的方法外,又提供了如下方法:

类型方法说明
voidaddFirst(Object o)将指定元素插入集合的开头
voidaddLast(Object o)将指定元素插入集合的结尾
ObjectgetFirst()返回集合的第一个元素
ObjectgetLast()返回集合的最后一个元素
ObjectremoveFirst()移除并返回集合的第一个元素
ObjectremoveLast()移除并返回集合的最后一个元素
Objectpop()弹出链表的第一个元素
voidpush(Object o)将元素推入链表第一的位置
booleanisEmpty()如果链表不包含元素,返回 true

3. 类的使用

  • LinkedList 添加元素顺序和 add() 顺序有关;
  • LinkedList 没有同步方法,多线程同时访问一个 List,必须自己实现访问同步(即线程不安全);
import java.util.Iterator;
import java.util.LinkedList;

public class test {
    public static void main(String[] args) {
        LinkedList ll = new LinkedList();
        ll.add("apple");
        ll.add("banana");
        ll.addFirst("cat");
        ll.addLast("dog");
        Iterator it = ll.iterator();
        while (it.hasNext()) {
            System.out.print(it.next() + ", ");
        }
        System.out.println();
        System.out.println(ll.getFirst());
        System.out.println(ll.getLast());
        System.out.println(ll.removeFirst());
        System.out.println(ll.removeLast());
        ll.add(1, "ball");
        Object val = ll.get(2);
        ll.set(2, (String) val + " Updated");
        it = ll.iterator();
        while (it.hasNext()) {
            System.out.print(it.next() + ", ");
        }
        System.out.println(ll.pop());
        System.out.println();
        ll.push("push");
        System.out.println(ll.isEmpty());
        it = ll.iterator();
        while (it.hasNext()) {
            System.out.print(it.next() + ", ");
        }
    }
}
//输出:
//cat, apple, banana, dog,
//cat
//dog
//cat
//dog
//apple, ball, banana Updated, apple
//
//false
//push, ball, banana Updated,

4. 源码分析


5. 与数组的比较

  • 数组是连续的内存空间,查询快,添加和删除元素速度慢;
  • 链表的元素是不连续存放的,上一个元素记录下一个元素的地址,增删快,查询慢;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值