Это не очень полезно для вас, так как это задание, над которым вы работаете, но это пример, где структура данных, специально разработанная для сопоставления ключей с несколькими значениями, показывает, насколько она лучше, чем * 1001. *.
Тип сбора Guava Multimap
отслеживает общее количество записей, которые он содержит, поэтому, если вы используете TreeMultimap<String, Foo>
вместо TreeMap<String, TreeSet<Foo>>
, вы можете просто позвонить multimap.size()
чтобы получить номер, который вы ищете.
Кстати, реализации Multimap
хранят промежуточную сумму количества записей, которая обновляется, когда записи добавляются или удаляются из нее. Вы могли бы быть в состоянии сделать это, выполнив некоторые причудливые вещи с подклассами TreeMap
и упаковав добавленные к нему TreeSet
, но было бы довольно сложно заставить все это работать должным образом. думаю.