您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Java的LinkedList是否经过优化以在必要时反向执行get(index)?

Java的LinkedList是否经过优化以在必要时反向执行get(index)?

是的。您可以自己检查源代码http ://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/LinkedList.java#LinkedList.entry%28int% 29

LinkedList#get(int) 被实现为

return entry(index).element;

entry私有方法在哪里。entry的定义是:

private Entry<E> entry(int index) {
    if (index < 0 || index >= size)
        throw new indexoutofboundsexception("Index: "+index+
                                            ", Size: "+size);
    Entry<E> e = header;
    if (index < (size >> 1)) {
        for (int i = 0; i <= index; i++)
            e = e.next;
    } else {
        for (int i = size; i > index; i--)
            e = e.prevIoUs;
    }
    return e;
}

如您所见,如果index大于列表的中点,则从末尾开始递减计数。

java 2022/1/1 18:27:45 有463人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶