我需要存储一组由时间段(开始、结束)定义的数据结构以及该时间段的计数器,用于保存一些复杂的计算结果。数据结构的简化定义如下:
public class CounterBag {
private Period period; // collection key
private Counter counter;
// accessors
// ...
}
期间
很简单:
public class Period {
public DateTime start;
public DateTime end;
// accessors
// ...
}
我需要一个集合来保存由不同Periods
定义的CounterBag
对象。
该集合需要通过 long timeInMillis
提供有效的查找(这里是问题!),因此 HashMap
并不是真正的选择,因为我不想覆盖 equals
和 CounterBag
的 hashcode
(我需要它们)。该集合需要按Period
(按结束日期)排序。 周期
具有灵活的持续时间,执行查找的部分不知道该持续时间。
我想知道java标准API或某些开源库中是否有开箱即用的集合可以帮助我解决这个问题?某种排序集或排序映射能够实现按日期高效查找。按日期查找将返回一个 CounterBag
,其中包含日期所在的 Period
。
感谢您的建议。
最佳答案
您可以使用 TreeMap 作为其排序集合(这使得查找高效)
如果您的经期有规律的间隔(这是最简单的形式),您不需要这样的集合。您可以为每个间隔设置一个计数器。例如一个int[]
关于java - 我可以使用哪个 Java 集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10572201/