Java TreeSet 的实际工作原理

Java How TreeSet actually works

有人可以解释一下 TreeSet 是如何工作的,得到以下输出吗? 谢谢。

import java.util.*;
public class Main {
    public static void main(String args[]) {
    Set<String> fructe = new TreeSet<>(Arrays.asList("mere", "pere", "banane", "mere", "kiwi", "ananas", "portocale"));
    System.out.println(fructe);
    }
}

[ananas, banane, kiwi, mere, pere, portocale]

OpenJDK 实现使用了 https://en.wikipedia.org/wiki/Red%E2%80%93black_tree

这些元素使用它们的自然顺序进行排序,或者由在设置创建时提供的比较器进行排序,具体取决于使用的构造函数。

为了简单,你可以认为一个TreeSet是一个Set,其中的元素是unique.

有关详细信息,TreeSet class 扩展了 SortedSetSetCollectionIterable,如下图所示。

因此,TreeSet 中的元素 是唯一的,并且已根据实施的排序算法 排序。 TreeSet 的元素必须实现 Comparable 并覆盖 compareTo() 方法 以便 Java 知道如何比较元素,以防它们不是原始元素。

您可以找到更多信息here

希望这可以帮助您解决问题![​​=23=]

TreeSet 的字符串只是将字符串存储在 字典顺序 中。词典顺序与 词典顺序 相同,即单词在字典中的排序方式。如果两个字符串具有相同的长度并且在相同的位置包含相同的字符,那么这两个字符串在字典顺序上是相等的。

如果您想要不同的结果,那么您可以使用自定义 Comparator