有沒有更好的方式來訪問比Java列表解決第一和最後一個元素
curr.set(curr.size()-1, 10);
curr.get(curr.size()-1);
curr.set(0, 10);
curr.get(0);
其他Java列表在哪裏CURR可以被假定爲是名單上的第一個和最後的位置。
有沒有更好的方式來訪問比Java列表解決第一和最後一個元素
curr.set(curr.size()-1, 10);
curr.get(curr.size()-1);
curr.set(0, 10);
curr.get(0);
其他Java列表在哪裏CURR可以被假定爲是名單上的第一個和最後的位置。
如果你使用LinkedList
你可以得到最後和第一個元素。
LinkedList<String> linkedList = new LinkedList<>();
linkedList.add("element");
String last = linkedList.getLast();
String first = linkedList.getFirst();
這兩種操作是不變的時間,但如果該列表是空的一個NoSuchElementException
將被拋出。
在第一個和最後一個是您實際訪問的唯一元素的情況下,我建議您使用java.util.Deque<T>
而不是List
。
Deque不允許設置第一個和最後一個元素。僅插入隊列的頭部/尾部。 –
通過在使用AddLast和AddFirst插入之前使用RemoveLast和RemoveFirst可以輕鬆解決這個問題。 – JBWanscher
我寧願使用Google Guava的Iterables
util class;
Iterables.getFirst(myList);
Iterables.getLast(myList);
在此之上,它有一個安全的邏輯,您可以在情況給出一個默認值列表爲空/空。
Iterables.getFirst(myList, defaultVal);
Iterables.getLast(myList, defaultVal);
但是,然後我假設得到將是O(n)。我想我真正想要的是C++向量的便利性(它支持front()和back()以及隨機訪問隨機索引的常量訪問)。從我可以告訴的不存在。只是想確定。 – Pradyot