Java LinkedList源码

来源:互联网 发布:阿菲金软件价格 编辑:程序博客网 时间:2024/06/05 13:24

Linkedlist的源码结构和其他没有太大区别,但细节上非常有学习的必要

一、大体结构

总体上还是围绕双向链表,以链表的操作:
1、CURD为底拓展了一系列方法,从首尾增删的remove-unlinkf/l、add-link,中间删除的remove-unlink,查询的一系列
2、边界检测用的方法:isPositionIndex等

二、方法细节笔记

方法之间低耦合,抽象出高内聚的方法,在服务性的方法中调用,边界检测放在外层方法中
public void add(int index, E element) {        checkPositionIndex(index);        if (index == size)            linkLast(element);        else            linkBefore(element, node(index));    }

实现高复用,add方法多使用私有方法,如何设计私有方法,抽象出最原本的方法

 Node<E> node(int index) {        // assert isElementIndex(index);        if (index < (size >> 1)) {            Node<E> x = first;            for (int i = 0; i < index; i++)                x = x.next;            return x;        } else {            Node<E> x = last;            for (int i = size - 1; i > index; i--)                x = x.prev;            return x;        }    }

提高效率,当索引在前半部分时从first开始遍历,反之从last,大大提高效率


原创粉丝点击