是否有保留可逆重复插入顺序的集合?
具体来说,如果我插入以下项目:
1
2
3
1
我希望能够迭代它们并按以下顺序接收它们:
1
3
2
也就是说,我希望它们按降序插入顺序重复插入导致重新排序。 Guava's LinkedListMultimap是我发现的最接近的,但它不支持下行遍历。
Java's LinkedHashSet不起作用,因为它不允许下行遍历。
我也可以使用LRU缓存,但我发现的大多数LRU库都不支持以LRU顺序检索对象。
这件事有标准名称吗?
答案 0 :(得分:5)
如何使用LinkedHashSet并且每当您检测到该项目在那里时,您将其删除并重新插入?这是保证插入顺序的唯一方法是您期望的(或其反转)。
您可以LinkedList
在LinkedHashSet
上创建{{1}}并以您喜欢的任何方式对其进行反转,例如iterate over the LinkedHashSet
。使用Guava的Lists.reverse
方法。
答案 1 :(得分:1)
尝试org.apache.commons.collections4.set
类listOrderedSet.add(1,1);
listOrderedSet.add(1,2);
listOrderedSet.add(1,3);
listOrderedSet.add(1,1);
。
例如:
{{1}}
这会给你预期的输出。