java - 为什么 Java 不为 ArrayLists 实现 last() 方法?
问题描述
我不是在问如何找到它,这已经在另一个问题中得到了回答:
但是只是深入研究 Java 中的数据结构,我发现 LinkedList 实现有一个getLast()方法,但在 ArrayList 实现中没有实现(我想是出于某种原因)。我找不到任何其他类似的问题,也找不到在互联网上解释它的帖子,所以我决定在这里问它。
我们可能同意当前从 ArrayList 中获取最后一个元素的方式并不优雅,并且通常这种实现比 LinkedList 使用更广泛,因为它在更广泛的场景中表现更好,正如这里讨论的那样。
有人知道为什么 ArrayList 不实现该方法吗?
编辑:我已经编辑了我的问题以避免混淆和基于意见的答案。根据事实和参考资料,Andreas 下面的答案是我一直在寻找的答案。
解决方案
Collection 类通常不实现接口未指定的任何公共方法。
ArrayList
确实有一个trimToSize()
未由接口指定的命名方法,但这是一个非常特定于实现的方法。
LinkedList
没有任何接口未指定的方法。
原因 LinkedList
有一个显示getLast()
在 javadoc 中:
Deque
有大部分相同的方法List
。主要区别在于List
具有通过索引位置访问元素的方法,而Deque
具有访问第一个/最后一个元素的方法。
如果您想使用类似列表的集合结构,其中对最后一个元素的访问很简单,请对Deque
接口进行编码,而不是对接口进行编码List
,并使用.ArrayDeque
ArrayList
推荐阅读
- excel - 单元格中的工作表名称/如何编写公式以便可以调用单元格中引用的工作表中的值
- ansible - 如何使用for循环从模板中的dict获取值?
- javascript - 具有两个属性的对象。一个带有初始值,第二个带有改变它的函数
- sql - 如何在 PostgreSQL 事务中运行依赖查询
- javascript - 什么时候 document.cookie 不是字符串?
- java - 为什么对转换数组生成的列表进行排序也会影响原始数组
- next.js - Nextjs 从项目文件夹导入数据以在 getStaticProps 中使用
- elasticsearch - 如何在 Centos-7 中以 nohub 模式运行 Esrally 以使其连续运行?
- excel - 如何选择在特定列中具有特定文本的单元格
- python - 在python中实现文件大小限制的日志轮换