2015-02-16 2 views
0

У меня есть TreeMap<LocalDate, TreeSet<EmployeeObject>, который содержит Date в качестве ключа и Set всего сотрудника, чья дата рождения. Я хочу повторить этот Map между двумя датами, например 22/02/15 to 27/02/15. Можно ли сделать это эффективно, не пройдя весь Map?Итерация через карту Java в диапазоне

(EDIT). Дополнительный вопрос: Как альтернатива, вы думаете, что Trie или какая-либо другая структура данных лучше подходит для этой ситуации, чем Map при хранении дат рождения для всех сотрудников, а затем последующего запроса их между диапазоном?

+0

Попробуйте [TreeMap # navigableKeySet] (http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html#navigableKeySet%28%29) – eckes

ответ

2

Все зависит от того, какую карту вы используете. Если вы используете HashMap, нет. Если вы используете TreeMap, да (см. Интерфейс the NavigableMap, который он реализует). Если вы используете Guava RangeMap, особенно да.

+0

Я использую TreeMap – Abhay

1

Используйте TreeMap как реализацию (или импортируйте данные на него). Он предоставит вам доступ к NavigableSet для ключей или представление подмары Map в запрошенном диапазоне (который вы можете выполнять итерацию в обычном режиме). Это точки зрения, поэтому данные не дублируются.

Смежные вопросы