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 扩展了 SortedSet
、Set
、Collection
和 Iterable
,如下图所示。
因此,TreeSet
中的元素 是唯一的,并且已根据实施的排序算法 排序。 TreeSet
的元素必须实现 Comparable
并覆盖 compareTo()
方法 以便 Java 知道如何比较元素,以防它们不是原始元素。
您可以找到更多信息here。
希望这可以帮助您解决问题![=23=]
TreeSet
的字符串只是将字符串存储在 字典顺序 中。词典顺序与 词典顺序 相同,即单词在字典中的排序方式。如果两个字符串具有相同的长度并且在相同的位置包含相同的字符,那么这两个字符串在字典顺序上是相等的。
如果您想要不同的结果,那么您可以使用自定义 Comparator
。
有人可以解释一下 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 扩展了 SortedSet
、Set
、Collection
和 Iterable
,如下图所示。
因此,TreeSet
中的元素 是唯一的,并且已根据实施的排序算法 排序。 TreeSet
的元素必须实现 Comparable
并覆盖 compareTo()
方法 以便 Java 知道如何比较元素,以防它们不是原始元素。
您可以找到更多信息here。
希望这可以帮助您解决问题![=23=]
TreeSet
的字符串只是将字符串存储在 字典顺序 中。词典顺序与 词典顺序 相同,即单词在字典中的排序方式。如果两个字符串具有相同的长度并且在相同的位置包含相同的字符,那么这两个字符串在字典顺序上是相等的。
如果您想要不同的结果,那么您可以使用自定义 Comparator
。