我正在处理一个问题,我需要存储具有无复制和维护顺序的需求的元素。我选择了LinkedHashSet
因为它满足了我的要求。Java LinkedHashSet从末尾删除一些元素
比方说,我有这样的代码:
LinkedHashSet hs = new LinkedHashSet();
hs.add("B");
hs.add("A");
hs.add("D");
hs.add("E");
hs.add("C");
hs.add("F");
if(hs.contains("D")){
//do something to remove elements added after"D" i-e remove "E", "C" and "F"
//maybe hs.removeAll(Collection<?>c) ??
}
任何人都可以请指导我的逻辑删除这些元素呢?
我使用了错误的数据结构吗?如果是这样,那么更好的选择是什么?
+1 - 分析发现。这些元素必须单独从哈希表中删除,并且这使得O(N)...无论您如何处理“链接”或“排序”要求。 – 2013-04-08 22:55:03
其实我对O(n)没有问题,因为我的数据并不是那么大的担心。我面临的真正问题是LinkedHashSet没有实现get(index)函数。它也没有告诉我哪个是最后一个元素。所以,我不能像你说的那样真正地遍历列表。 – Jazib 2013-04-09 16:08:28
编写你自己的包装哈希集和链表数据结构的类可能是最容易的,这样你就可以准确地公开你想要在底层数据结构上使用什么方法。 – 2013-04-10 14:24:52