Являются ли они деревьями 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.