【发布时间】:2017-12-07 13:10:45
【问题描述】:
我在 java 中寻找一个好的排序数据结构。在做了一些研究之后,得到了一些关于使用 TreeSet/TreeMap 的提示。但是这些组件缺少一件事:随机访问集合中的一个元素。例如,我想访问排序集中的第 n 个元素,但使用 TreeSet,我必须遍历其他 n-1 个元素才能到达那里。这将是一种浪费,因为我的 Set 中有多达数千个元素。
用例如下所示
9:20 AM what is this object? edited by user1
9:30 AM what is this book ? edited by user2
9:40 PM what is this red book? edited by user1
我总是想显示该用户最新编辑的标题。我知道最新的将是最大的时间戳。为此,我发现ConcurrentSkipListSet/Maps 很好。但是,我想知道是否有更好的方法来实现此功能。
【问题讨论】:
-
在平衡树中,您只需要遍历日志 N 个条目,而不是 N-1 个条目。
-
为什么不只记住变量中的最新元素?为什么需要收藏?
-
我不明白。 TreeSet 和 TreeMap 是专门为通过 get() 方法随机访问元素而构建的。
-
@kan 原因是如果用户撤销编辑我想获得编辑字符串的先前版本。
-
要从 TreeSet 中选择前一个元素,您不应该通过索引获取元素,而是使用 NavigableSet 方法查找之前的元素。
标签: java sorting collections