首页 > 解决方案 > 为什么 Java 不为 ArrayLists 实现 last() 方法?

问题描述

我不是在问如何找到它,这已经在另一个问题中得到了回答:

但是只是深入研究 Java 中的数据结构,我发现 LinkedList 实现有一个getLast()方法,但在 ArrayList 实现中没有实现(我想是出于某种原因)。我找不到任何其他类似的问题,也找不到在互联网上解释它的帖子,所以我决定在这里问它。

我们可能同意当前从 ArrayList 中获取最后一个元素的方式并不优雅,并且通常这种实现比 LinkedList 使用更广泛,因为它在更广泛的场景中表现更好,正如这里讨论的那样。

有人知道为什么 ArrayList 不实现该方法吗?

编辑:我已经编辑了我的问题以避免混淆和基于意见的答案。根据事实和参考资料,Andreas 下面的答案是我一直在寻找的答案。

标签: javaarraylistdata-structureslinked-list

解决方案


Collection 类通常不实现接口未指定的任何公共方法。

ArrayList确实有一个trimToSize()未由接口指定的命名方法,但这是一个非常特定于实现的方法。

LinkedList没有任何接口未指定的方法。

原因 LinkedList有一个显示getLast()在 javadoc 中:

指定者:接口Deque < E >中的
getLast

Deque有大部分相同的方法List。主要区别在于List具有通过索引位置访问元素的方法,而Deque具有访问第一个/最后一个元素的方法。

如果您想使用类似列表的集合结构,其中对最后一个元素的访问很简单,请对Deque接口进行编码,而不是对接口进行编码List,并使用.ArrayDequeArrayList


推荐阅读