Какое дерево используется в TreeSet и TreeMap в Java?

Это деревья AVL, красно-черные деревья или что-то еще?

5 ответов


красный-черный деревья, как описано в первой строке javadoc.


С java.util.TreeMap<K,V> документы:

A красно-черное дерево на основе NavigableMap реализация.

для таких вопросов, как эти, вы всегда должны сначала обратиться к документации. API не должен описывать все внутренней работы class, но обычно используются элементарные сведения, такие как общие структуры данных и алгоритмы зарегистрированный.


другие Java коллекции Framework trivias

это все маленькие мелочи, которые также четко документировать:

  • TreeSet осуществляется с TreeMap
  • HashSet осуществляется с HashMap
  • Collections.sort использует измененный mergesort
  • Map<K,V> не Collection<?>
  • ArrayList не указывает точную политику роста (в отличие, скажем,Vector)

вопросы


первое предложение карта деревьев Javadoc гласит:

красно-черное дерево на основе NavigableMap реализация.


Это красно-черное дерево в реализации Oracle desktop Java, но AVL-дерево в Android.


TreeSet основан на TreeMap. И они используют красно-черное дерево,красно-черное дерево является своего рода AVL.