gpt4 book ai didi

java - 基于 SortedSet 中的 compareTo() 进行排序

转载 作者:行者123 更新时间:2023-11-29 08:47:17 25 4
gpt4 key购买 nike

您好,这是我从一本书中找到的一个问题。我不太清楚 compareTo() 方法中发生的事情。树集是一个排序类。那么它总是调用 compareTo() 吗?

在 compareTo() 内部,如何根据 return age-((Person)0).age 完成排序?

    package javaapplication1;

import java.util.NavigableSet;
import java.util.SortedSet;
import java.util.TreeSet;


public class _157 {
public static void main(String args[]){

NavigableSet s=new TreeSet();
for(int i=50;i<55;++i){
s.add(new Person(i));
}
SortedSet s2=s.tailSet(new Person(52));
System.out.println(s2);
}
}

class Person implements Comparable{
private int age;
@Override
public int compareTo(Object t) {
return ((Person)t).age-age;

}

Person(int age){

this.age=age;

}
public String toString(){
return "Person("+age+")";
}

}

最佳答案

如果您仔细查看 Java 中的 TreeMap 类的 put 方法,会在添加到类之前对新对象进行比较。

Check this .

在 Map 中添加对象时,会使用您在 Domain 类中实现的 compareTo 方法。 (仅供引用,TreeSet 最终使用 TreeMap 按排序顺序存储对象)。

任何修改操作最终都会调用'compareTo方法对Map中的对象进行排序,并根据compareTo`方法的结果存储对象。

compareTo 方法在您的情况下的作用:它将比较两个人的年龄并返回他们年龄之间的差异,并根据此返回值对 TreeMap 进行排序。

因此,如果您使用 ((Person)t).age-age 作为返回值,那么它将按照年龄的降序存储此人。

关于java - 基于 SortedSet 中的 compareTo() 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24484185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com