LinkedList源码实现 get方法

2021-04-05  本文已影响0人  粽十三丶

LinkedList源码实现 get

1.首先看get源码

public E get(int index) {

//调用checkElementIndex()方法

        checkElementIndex(index);

        return node(index).item;

    }

2.调用checkElementIndex方法判断是否索引越界,否则抛出异常

private void checkElementIndex(int index) {

        if (!isElementIndex(index))

            throw new IndexOutOfBoundsException(outOfBoundsMsg(index));

    }

3.调用node方法取值

Node<E> node(int index) {

        // assert isElementIndex(index);

//判断取值的下标是否小于数据总长度的一半,true则从前面开始用for循环比对往后面查询

//判断方式为从0或则从最后一位开始循环,通过链表的第一位往后或者最后一位往前取值,循环到index位返回结果

        if (index < (size >> 1)) {

            Node<E> x = first;

            for (int i = 0; i < index; i++)

                x = x.next;

            return x;

        } else {

//false则用for循环从后面往前查询

            Node<E> x = last;

            for (int i = size - 1; i > index; i--)

                x = x.prev;

            return x;

        }

    }

上一篇 下一篇

猜你喜欢

热点阅读