Java列表寻址第一个和最后一个元素

Java列表寻址第一个和最后一个元素,java,collections,Java,Collections,除了访问java列表中的第一个和最后一个位置之外,还有其他更好的方法吗 curr.set(curr.size()-1, 10); curr.get(curr.size()-1); curr.set(0, 10); curr.get(0); 如果第一个和最后一个元素是您实际访问的唯一元素,我建议您使用java.util.Deque而不是list如果使用LinkedList,您可以获得最后和第一个元素 LinkedList<String> linkedList = new Linked

除了访问java列表中的第一个和最后一个位置之外,还有其他更好的方法吗

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

如果第一个和最后一个元素是您实际访问的唯一元素,我建议您使用
java.util.Deque
而不是
list

如果使用
LinkedList
,您可以获得最后和第一个元素

LinkedList<String> linkedList = new LinkedList<>();
linkedList.add("element");

String last = linkedList.getLast();
String first = linkedList.getFirst();
LinkedList LinkedList=新建LinkedList();
添加(“元素”);
String last=linkedList.getLast();
String first=linkedList.getFirst();

这两个操作都是常量时间,但如果列表为空,则会抛出一个
NoTouchElementException

我更喜欢使用Google Guava的
Iterables

最重要的是,它有一个安全的逻辑,在这个逻辑中,如果列表为空/null,您可以给出一个默认值

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

Deque不允许设置第一个和最后一个元素。仅在队列的头/尾插入。在使用AddLast和AddFirst插入之前,使用RemoveLast和RemoveFirst很容易解决这一问题。但是,我假设get是O(n)。我想我真正想要的是C++向量的便利性(它支持Frand)和()(同时对随机索引进行常量访问)。据我所知,那是不存在的。只是想确定一下。
Iterables.getFirst(myList, defaultVal);
Iterables.getLast(myList, defaultVal);