2017-04-14 118 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); 
相關問題