我想存储一个数字列表1,2,3,4 - (让我们从List<Integer>
开始)
我想确保数字是唯一的(好的,好的,Set<Integer>
)
我想保证订单(ok ... LinkedHashSet<Integer>
)
我想从列表中获取最后一个元素..
将最后一个数字插入LinkedHashSet<Integer>
的最简单方法是什么?
答案 0 :(得分:10)
此处没有预先烘焙的选项。有两种袖口选择,两种都不好:
订单方法:
public <E> E getLast(Collection<E> c) {
E last = null;
for(E e : c) last = e;
return last;
}
呸!但也有一个订单1方法:
class CachedLinkedHashSet<E> extends LinkedHashSet {
private E last = null;
public boolean add(E e) {
last = e;
return super.add(e);
}
public E getLast() {
return last;
}
}
这是关闭袖口,所以可能有一个微妙的错误,并确保这不是线程安全或任何东西。您的需求可能会有所不同,并导致您采用一种方法而不是另一种方法。
答案 1 :(得分:5)
使用java-8,您可以获得Stream
的顺序LinkedHashSet
,跳过前n-1个元素并获取最后一个元素。
Integer lastInteger = set.stream().skip(s.size()-1).findFirst().get();
答案 2 :(得分:2)
首先,我同意corsiKa的解决方案,它提出了LinkedHashSet
类的扩展版本,其中包含指向最后一个元素的指针。但是,您可以通过为数组占用一些空间来使用传统方法:
set.toArray()[ set.size()-1 ] // returns the last element.
答案 3 :(得分:0)
答案 4 :(得分:-3)
集合与order.in无法按索引访问元素。如果你需要最后一个元素,
1)创建新的ArrayList(Set)
可以轻松访问arrayList的最后一个元素