LinkedList中的node(int index)

时间:2018-05-11 17:35:18

标签: java collections linked-list bit-manipulation

有人可以解释一下LinkedList中方法节点(int index)的逻辑。是什么让位偏移1:

(index < (size >> 1))

方法:

Node<E> node(int 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;
    }
}

感谢您的回答!

1 个答案:

答案 0 :(得分:1)

size >> 1相当于size / 2

我想这个函数在索引node找到x

基本上,它的作用是将index与节点总数进行比较。

如果index < size/2则会从0搜索到size/2

如果index > size/2则会从size搜索到size/2

例如,如果您不将indexsize/2进行比较,则可能会对整个列表进行循环,即O(n)。通过这样做,您可以将迭代减少一半。 (O(n/2)