Java列表如何获取第一个和最后一个元素

3

除了使用以下代码之外,有没有更好的访问Java列表中第一个和最后一个位置的方法:

curr.set(curr.size()-1, 10);
curr.get(curr.size()-1);
curr.set(0, 10);
curr.get(0);

假设 curr 是一个列表。

4个回答

5
如果您使用 LinkedList,您可以获取最后一个和第一个元素。
LinkedList<String> linkedList = new LinkedList<>();
linkedList.add("element");

String last = linkedList.getLast();
String first = linkedList.getFirst();

两个操作的时间复杂度都是常数,但如果列表为空,则会引发 NoSuchElementException


但我认为获取将会是O(n)。我想我真正在寻找的是C++向量的便利性(它支持front()和back(),以及对随机索引的常数时间访问)。从我所知道的情况来看,这种数据类型似乎不存在。只是想确认一下。 - Pradyot

3

我更倾向于使用谷歌Guava的Iterables实用类;

Iterables.getFirst(myList);
Iterables.getLast(myList);

此外,它具有安全逻辑,在列表为空/ null的情况下,您可以提供默认值。
Iterables.getFirst(myList, defaultVal);
Iterables.getLast(myList, defaultVal);

2
关于检索首尾元素,Java 21 正在向 `List` 接口添加方法 `getFirst()` 和 `getLast()`。
curr.getLast();
curr.getFirst();

1
如果您只访问第一个和最后一个元素,我建议您使用java.util.Deque<T>而不是List

双端队列不允许设置第一个和最后一个元素。只能在队列的头部/尾部插入。 - JB Nizet
这可以很容易地通过在使用AddLast和AddFirst插入之前使用RemoveLast和RemoveFirst来解决。 - JBWanscher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接