Мне нужно сохранить набор структур данных, которые определяются периодом времени (начало, конец) и счетчик за этот период, который содержит некоторые сложные результаты расчета. Упрощенное определение структуры данных выглядит следующим образом:Какую коллекцию java можно использовать?
public class CounterBag {
private Period period; // collection key
private Counter counter;
// accessors
// ...
}
Period
так же просто, как:
public class Period {
public DateTime start;
public DateTime end;
// accessors
// ...
}
мне нужно иметь набор, который содержит объекты, определенные CounterBag
отчетливым Periods
. Коллекция должна обеспечивать эффективный поиск (здесь подвох!) По long timeInMillis
, так HashMap
это не вариант, так как я не хочу, чтобы перезаписать equals
и hashcode
из CounterBag
(мне нужно их обоих). Сбор необходимо отсортировать по Period
(по дате окончания). Period
s имеют гибкую продолжительность, которая не известна той части, которая будет выполнять поиск.
Интересно, есть ли коллекция из коробки в стандартном API Java или в какой-то библиотеке с открытым исходным кодом, которая может помочь мне в ее решении? Какой-то сортированный набор или отсортированная карта, которая позволяет реализовать эффективный поиск по дате. Поиск по дате вернет CounterBag
с Period
.
Оцените свои предложения.
Периодически перекрываются? –