2017-04-14 77 views
3

有没有更好的方式来访问比Java列表解决第一和最后一个元素

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

其他Java列表在哪里CURR可以被假定为是名单上的第一个和最后的位置。

回答

4

如果你使用LinkedList你可以得到最后和第一个元素。

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

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

这两种操作是不变的时间,但如果该列表是空的一个NoSuchElementException将被抛出。

+0

但是,然后我假设得到将是O(n)。我想我真正想要的是C++向量的便利性(它支持front()和back()以及随机访问随机索引的常量访问)。从我可以告诉的不存在。只是想确定。 – Pradyot

0

在第一个和最后一个是您实际访问的唯一元素的情况下,我建议您使用java.util.Deque<T>而不是List

+0

Deque不允许设置第一个和最后一个元素。仅插入队列的头部/尾部。 –

+0

通过在使用AddLast和AddFirst插入之前使用RemoveLast和RemoveFirst可以轻松解决这个问题。 – JBWanscher

2

我宁愿使用Google Guava的Iterablesutil class;

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

在此之上,它有一个安全的逻辑,您可以在情况给出一个默认值列表为空/空。

Iterables.getFirst(myList, defaultVal); 
Iterables.getLast(myList, defaultVal); 
相关问题