Skip to content

Conversation

@Chaobk
Copy link
Contributor

@Chaobk Chaobk commented Sep 8, 2024

因为本身就有头尾指针,遍历元素的时候会从最近的指针出发,最多会遍历n/2个元素,平均应该是n/4。Java8源码片段如下:

    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;
        }
    }

因为本身就有头尾指针,遍历元素的时候会从最近的指针出发,最多会遍历n/2个元素,平均应该是n/4。Java8源码片段如下:

    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;
        }
    }
@Snailclimb Snailclimb merged commit e06114f into Snailclimb:main Sep 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants