Возвращает ли entrySet () TreeMap TreeSet - PullRequest
9 голосов
/ 26 августа 2010

Возвращает ли функция entrySet (), которая вызывается из экземпляра древовидной карты, TreeSet записи или просто набор записей. Порядок гарантирован?получить список записей в порядке?

Ответы [ 3 ]

8 голосов
/ 26 августа 2010

И наоборот: TreeSet использует TreeMap для внутреннего использования.(См. Первое предложение документов TreeSet )

В Интернете не так много исходного кода Sun Java, на который я могу найти ссылки, но вот несколько старых версий:

Как видите, TreeMap определяет внутренний класс с именем TreeMap.EntrySet, который просто расширяет AbstractSet.И нет, он не реализует SortedSet (который в противном случае, вероятно, был бы указан в SortedMap.entrySet () контракт).

Но для ответа на реальный вопросда, порядок гарантирован, как указано в контракте SortedMap.entrySet () .


Обновление: ссылки на JavaDoc обновлены для Java 8, источники по-прежнему являются Java 6

6 голосов
/ 26 августа 2010

Из JavaDoc :

public Set<Map.Entry<K,V>> entrySet()

Возвращает представление Set отображений, содержащихся в этой карте. Итератор набора возвращает записи в порядке возрастания ключа.

0 голосов
/ 26 августа 2010
Assert.assertFalse(new TreeMap().keySet() instanceof SortedSet );
Assert.assertFalse(new TreeMap().keySet() instanceof TreeSet ); //no need to assert

Но на самом деле набор имеет порядок.

...