Java 树形图之后的排序技术?

Java 树形图之后的排序技术?,java,data-structures,map,sorting,Java,Data Structures,Map,Sorting,当我们试图打印存储在树映射中的数据时,有人能解释一下数据是如何在树映射中自动排序的吗?项目已经排序-这是通过使用a在内部存储项目来实现的。项目已经排序-这是通过使用a存储项目来实现的内部。他们不是;TreeMap使用一个树来管理数据,该树隐式地保持数据的排序。迭代器所要做的就是遍历节点。它们不是;TreeMap使用一个树来管理数据,该树隐式地保持数据的排序。迭代器所要做的就是遍历节点。如果树映射存储了实现可比较接口的对象(字符串也存储了),那么它就使用.compareTo方法来比较单个字符串并确

当我们试图打印存储在树映射中的数据时,有人能解释一下数据是如何在树映射中自动排序的吗?

项目已经排序-这是通过使用a在内部存储项目来实现的。

项目已经排序-这是通过使用a存储项目来实现的内部。

他们不是;TreeMap使用一个树来管理数据,该树隐式地保持数据的排序。迭代器所要做的就是遍历节点。

它们不是;TreeMap使用一个树来管理数据,该树隐式地保持数据的排序。迭代器所要做的就是遍历节点。

如果树映射存储了实现可比较接口的对象(字符串也存储了),那么它就使用.compareTo方法来比较单个字符串并确定排序顺序


另一方面,您可以在构建树映射时提供一个比较器,它将使用该对象来比较对象并确定排序顺序。您可以使用比较器来比较未实现可比较的对象,或实施不同的排序策略。例如,String.compareTo方法执行区分大小写的比较,但您可以提供String.case不区分大小写的顺序比较器,这将导致不区分大小写的排序。

如果树映射存储实现可比较接口的对象(而String确实如此)然后,它使用.compareTo方法比较单个字符串并确定排序顺序


另一方面,您可以在构建树映射时提供一个比较器,它将使用该对象来比较对象并确定排序顺序。您可以使用比较器来比较未实现可比较的对象,或实施不同的排序策略。例如,String.compareTo方法执行区分大小写的比较,但您可以提供String.case不区分大小写的顺序比较器,这将导致不区分大小写的排序。

感谢您提供的关于红黑树的参考。根据这项技术,您可以知道字符串值是如何排列的(即JVM是如何决定的),字符串比父字符串大(或小)。更一般地说,TreeMap类希望元素实现该方法所属的可比较接口。或者,您可以将Comparator接口的实现传递给TreeMap的构造函数,该构造函数允许它存储未实现Comparable的对象(或使用不同的排序顺序)@Fortega:如果是类的对象,比如说包含类的详细信息的Employee类,该如何处理employee@Hari:看起来您的问题基本上是关于对任何集合中的对象进行排序,而不仅仅是树集。您应该在文档中查找Comparable和Comparator接口。@MAK:我不关心对任何集合中的对象进行排序。我只是想知道treemap如何对对象进行详细排序。。。得到了答案。。。在发布我的评论之前,我没有看到迈克尔的评论。谢谢你给我的关于红黑树的推荐信。根据这项技术,您可以知道字符串值是如何排列的(即JVM是如何决定的),字符串比父字符串大(或小)。更一般地说,TreeMap类希望元素实现该方法所属的可比较接口。或者,您可以将Comparator接口的实现传递给TreeMap的构造函数,该构造函数允许它存储未实现Comparable的对象(或使用不同的排序顺序)@Fortega:如果是类的对象,比如说包含类的详细信息的Employee类,该如何处理employee@Hari:看起来您的问题基本上是关于对任何集合中的对象进行排序,而不仅仅是树集。您应该在文档中查找Comparable和Comparator接口。@MAK:我不关心对任何集合中的对象进行排序。我只是想知道treemap如何对对象进行详细排序。。。得到了答案。。。在发布我的评论之前,我没有看到迈克尔的评论。。