求解答,Java的ArrayDeque为什么不支持get方法。

发布于 2022-09-13 01:08:13 字数 332 浏览 19 评论 0

最近在看Java集合框架的代码,发现ArrayDeque没有get方法。是Java官方认为不需要该方法,还是无法支持?

public E get(int i) {
    if (i > elements.length || i < 0) {
        throw new IndexOutOfBoundsException();
    }
    i = (head + i) % elements.length;
    return (E) elements[i];
}

如果使用上述代码来获取ArrayDeque索引位置的元素,是否可行?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

天赋异禀 2022-09-20 01:08:13

都用队列了不就不应该关心位置么

眼趣 2022-09-20 01:08:13

Deque毕竟不是List
本身就是作为队列设计的,如果当一个普通List用,在一些场景(比如并不支持的在中间插入)的性能不如普通List

我的鱼塘能养鲲 2022-09-20 01:08:13

底层无非两种基本结构,链表和数组。链表强在增删,数组强在索引。链表结构需要为每一个存储对象创建node节点,占用内存,除此之外不需要考虑扩展成本。数组在每次扩展的时候复制为自己的两倍,在一一转移,实现成本均摊,两种都需要付出代价。而队列的语义便是先进先出,索引和增删都是不需要的。ArrayDeque,从名字也可以看出来是倾向于 数组了。其实抛开结构优势,也就是数组的索引,链表的增删。依然 数组这种静态数据有优势。deque 也有链表结构的,LinkedList属于 queue的链表实现。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文