Java TreeSet 是如何实现的
How Java TreeSet are implemented
我想知道 Java 中如何实现 TreeSet。事实上,我想知道,TreeSet 在底层使用平衡树,还是使用数组?
换句话说,当我向我的 treeSet 添加一个元素时,我知道它会被排序,但它会是:
添加一个数组,也就是说当我的数组满了,需要新建一个数组,把旧数组的所有元素复制到新数组中。
在内存中随机添加并链接到它之前和之后的元素?如果是这样,它是平衡元素,所以树的 "top" 总是在元素的中间,还是只是在适合的地方添加 "leaf",导致 "linear"树 ?
自从我学习数据结构以来已经有一段时间了,所以如果我的问题没有意义或没有得到很好的解释,请告诉我。
谢谢
Java 的 TreeSet
使用 TreeMap
,它由 red-black tree. So, mostly the second option, but red-black trees are self-balancing 支持,因此您不会 运行 进入病态的 "linear" 大小写,即使您按 ascending/descending 顺序插入元素。
我想知道 Java 中如何实现 TreeSet。事实上,我想知道,TreeSet 在底层使用平衡树,还是使用数组?
换句话说,当我向我的 treeSet 添加一个元素时,我知道它会被排序,但它会是:
添加一个数组,也就是说当我的数组满了,需要新建一个数组,把旧数组的所有元素复制到新数组中。
在内存中随机添加并链接到它之前和之后的元素?如果是这样,它是平衡元素,所以树的 "top" 总是在元素的中间,还是只是在适合的地方添加 "leaf",导致 "linear"树 ?
自从我学习数据结构以来已经有一段时间了,所以如果我的问题没有意义或没有得到很好的解释,请告诉我。
谢谢
Java 的 TreeSet
使用 TreeMap
,它由 red-black tree. So, mostly the second option, but red-black trees are self-balancing 支持,因此您不会 运行 进入病态的 "linear" 大小写,即使您按 ascending/descending 顺序插入元素。