[英]A space efficient data structure to store and look-up through a large set of (uniformly distributed) Integers
[英]Correct Data Structure for Collection with Multiple Mutable Look-Up Properties
如果我在内存中有5,000个或更多SampleObject
类型的SampleObject
class SampleObject {
...
Date getLastRefreshDate()
Status getCurrentStatus()
}
我想快速获取刷新日期早于某个值的对象的子列表,并且还能够快速获取具有特定状态的对象,那么什么数据结构/算法会有用? 迭代列表并进行比较足够快吗? 如果列表增加到25,000或更多怎么办?
TreeMap<Date, SampleObject>
可以很容易地获得“早于”某个日期的工作-您只需使用headMap
即可使所有对象早于某个值。
您需要一个单独的Map<Status, List<SampleObject>>
(或者,如果可以使用第三方库,一个Guava Multimap
)来跟踪具有某些特定状态的对象,但是我认为第二个数据结构是不可避免的无论如何,如果您不愿意为线性搜索付费。
NavigableSet和NavigableMap类提供了实现此目的的方法。
NavigableSet
已经提供诸如headSet
和tailSet
类的方法来获取另一个给定元素之前或之后的所有元素。 如果尚未将其日期条件用作SampleObject
类的自然顺序,则可以将其用作Comparator
。
除了其他有用的方法,如lower
floor
, floor
, ceiling
和higher
。
同样, NavigableMap
提供类似headMap和tailMap的方法来进行完全相同的切片。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.