防止重复但保留可逆重复插入顺序的集合?

Hea*_*ers 1 java collections guava data-structures

是否有保留可逆重复插入顺序的集合?

具体来说,如果我插入以下项目:

1
2
3
1
Run Code Online (Sandbox Code Playgroud)

我希望能够迭代它们并按以下顺序接收它们:

1
3
2
Run Code Online (Sandbox Code Playgroud)

也就是说,我希望它们按降序插入顺序,重复插入导致重新排序.Guava的LinkedListMultimap是我发现的最接近的,但它不支持下行遍历.

Java的LinkedHashSet不起作用,因为它不允许下行遍历.

我也可以使用LRU缓存,但我发现的大多数LRU库都不支持以LRU顺序检索对象.

这个东西有标准名称吗?

Gio*_*tta 5

如何使用LinkedHashSet,每当您检测到该项目在那里时,您将其删除并重新插入?这是保证插入顺序的唯一方法是您期望的(或其反转).

你可以iterate over the LinkedHashSet通过任何你喜欢的方式创建一个LinkedListover over LinkedHashSet和reverse,例如使用Guava的Lists.reverse方法.

  • 我认为你必须将集合转换为列表,然后你可以使用Guava的[`Lists.reverse`](https://code.google.com/p/guava-libraries/wiki/CollectionUtilitiesExplained#Lists)方法来创建反转的观点. (2认同)