Redis 有一种称为有序集的数据结构。
接口(interface)大致类似于 SortedMap,但按值而不是键排序。我几乎可以使用 SortedSet,但它们似乎采用静态排序值。
是否有类似概念的规范 Java 实现?
我的直接用例是在每个元素上构建一个带有 TTL 的集合。 map 的值(value)将是过期时间,我会定期修剪过期的元素。我还可以定期增加到期时间。
最佳答案
所以...几件事。
首先,决定您将更多地使用哪种访问权限。如果您将执行更多的 HashMap 操作(获取、放置)而不是访问排序列表,那么您最好只使用 HashMap 并在您想要修剪集合时对值进行排序。
至于修剪集合,听起来您只想删除时间小于某个时间戳的值,而不是删除最早的 n 项。如果是这种情况,那么您最好只根据值是否满足条件来过滤 HashMap。这可能比尝试先对列表进行排序然后删除旧条目要快。
关于java - 有没有等同于 Redis 排序集(zset)的 Java 数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23378906/