Являются ли они деревьями AVL, красно-черными деревьями или чем-то еще?
Какое дерево используется в Java TreeSet и TreeMap?
Ответ 1
Красно-черные деревья, как описано в первой строке javadoc.
Ответ 2
Из java.util.TreeMap<K,V> документация:
A Red-Black tree на основе
NavigableMapреализация.
Для таких вопросов вы всегда должны сначала ознакомиться с документацией. API не должен описывать ВСЕ внутреннюю работу class, но обычно документируются элементарные данные, такие как общие структуры данных и используемые алгоритмы.
Другие тривиальные схемы коллекций Java
Это все мелочи, которые также четко документированы:
-
TreeSetреализуется с помощьюTreeMap -
HashSetреализуется с помощьюHashMap -
Collections.sortиспользует измененный mergesort -
Map<K,V>неCollection<?> -
ArrayListне указывает точную политику роста (в отличие, скажем,Vector)
Связанные вопросы
Ответ 3
В первом предложении TreeMap Javadoc говорится:
Реализация
NavigableMapна основе Red-Black.
Ответ 4
Это красно-черное дерево в реализации настольных Java-приложений Oracle, но AVL-дерево в Android.
Ответ 5
TreeSet основан на TreeMap. И они используют красно-черное дерево, красно-черное дерево - это своего рода AVL.