JAVA集合之LinkedList

  1. LinkedList底层是一个双向链表,他维护了两个属性fistlast分别指向首节点和尾节点,每个节点(Node对象)中又维护的prevnextitem三个属性,通过prev指向前一个节点,next指向后一个节点,item就是具体的值
  2. 当使用无参构造器去构造LinkedList集合时,其实只是做了一个初始化,并没有其他作用。而当使用有参构造器去构造LinkedList,它只有一个参数,参数类型是集合类。有参构造方法调用了无参构造方法,并调用了addAll方法。addAll方法的主要作用是:将指定集合的所有元素添加到当前列表的尾部,按照指定集合的顺序插入,如果在操作正在进行时修改指定的集合,则此操作的行为是不确定的。此处说明了LinkedList不是线程安全的。
    public LinkedList() {
        this.size = 0;
    }
    public LinkedList(Collection<? extends E> var1) {
        this();
        this.addAll(var1);
    }
  1. 当调用add方法向LinkedList中添加元素(任意值)时,会判断fist和last属性值应该指向的节点并赋值,随后创建一个新的Node对象用item属性存放新添加的值,以及更新当前节点的prev和next属性。由于add()方法是将值添加在链表末尾,所以原有链表最后一个节点的next属性会指向新节点。
    private void linkFirst(E var1) {
        LinkedList.Node var2 = this.first;
        LinkedList.Node var3 = new LinkedList.Node((LinkedList.Node)null, var1, var2);
        this.first = var3;
        if (var2 == null) {
            this.last = var3;
        } else {
            var2.prev = var3;
        }

        ++this.size;
        ++this.modCount;
  1. LinkedList添加以及删除元素效率很快,因为只需要改变节点的prev和next属性的指向即可
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值