求解答,Java的ArrayDeque为什么不支持get方法。
最近在看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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
都用队列了不就不应该关心位置么
Deque
毕竟不是List
本身就是作为队列设计的,如果当一个普通
List
用,在一些场景(比如并不支持的在中间插入)的性能不如普通List
底层无非两种基本结构,链表和数组。链表强在增删,数组强在索引。链表结构需要为每一个存储对象创建node节点,占用内存,除此之外不需要考虑扩展成本。数组在每次扩展的时候复制为自己的两倍,在一一转移,实现成本均摊,两种都需要付出代价。而队列的语义便是先进先出,索引和增删都是不需要的。ArrayDeque,从名字也可以看出来是倾向于 数组了。其实抛开结构优势,也就是数组的索引,链表的增删。依然 数组这种静态数据有优势。deque 也有链表结构的,LinkedList属于 queue的链表实现。