有没有更好的方式来访问比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