treeset比较器(treeset范例排序没看懂,求解)

本文目录
treeset范例排序没看懂,求解
这个是treeset通过实现comparator接口进行对比的,后面的mycomp是比较器,这是treeset的一种特性,,在你传值的时候他会根据这个比较器进行存放,你取出的时候是已经比较好的。逆序是因为你实现的的mycomp中以b作为基准也就是后一个值比前一个值。他存放就是以后来的值为准不断调整进来过的值。。。你把比较器的最后return改成return aStr.compareTo(bStr); 就会变成正的了。。。至于这个compareTo则是string类的比较方法。 根据大小返回正数 ,负数,0
Treeset的add()方法问题
TreeSet类是SortedSet接口的实现类,按照一定的方式进行排序。从TreeSet的add方法的API中可以看到
Throws:
ClassCastException - if the specified object cannot be compared with the elements currently in this set
即两个对象没法比较时抛出这个异常
这个需要TreeSet(Comparator《? super E》 comparator)这个构造方法,而不是TreeSet()构造方法。Comparator比较器的compare方法需要自己重写。
具体你查看Comparator就会有很多例子能解释你这个问题
不懂继续讨论
在创建treeset对象时,可以传入自定义的比较器,自定义比较器需要实现什么接口
不是,只要再创建对象的时候利用匿名内部类,构造方法的括号里写入new comparator({
重写compare to方法
})
treeset集合中double小数怎么排序
TreeSet是一个默认的排序集合,楼主自己实现了一个比较器构造了这个集合,那么这个TreeSet就会根据比较器的比较顺序排序。至于升序和降序的问题:s2.compareTo(s1) 的结果与s1.compareTo(s2)的结果是相反的。
类似这样:
Java code?
Integer a = 1;
Integer b = 2;
System.out.println(a.compareTo(b));//输出-1
System.out.println(b.compareTo(a));//输出1

更多文章:
jquery动态添加表格行(如何通过jquery动态给表格添加一行)
2026年10月23日 00:30
cmake命令行参数(CMake (三)cmake 在工程中的用法)
2026年10月23日 00:00
linux数据备份命令(Linux系统下常用的数据备份方法有哪些)
2026年10月22日 23:20
executequery返回值(ExecuteQuery(sql)的返回值)
2026年10月22日 23:00
舍曲林吃了一周越来越严重(我母亲77岁,服用舍曲林一周,开始半片,4天后改为1片,第三天开始失眠,第四天出现乏力、食欲下降,)
2026年10月22日 21:00




