Java中TreeSet集合的排序,如果是对于Integer类型的数据排序,可以直接进行排序。但是如果是Float/Double类型的数据进行排序,因为不管利用Comparator接口还是Comparable接口重写方法进行排序,都会面临到他们的重写方法返回值只有int类型的问题。
1.最先想到的可能是我们可以把Float/Double类型的结果进行强转
如:
(1)定义一个TreeSet集合,然后存入6个Double类型的数据,分别是[1.1,5.2,6.3,2.5,5.2,3.3] (2)不去重,然后遍历输出(从大到小)
public class TreeSetDemo1 {
public static void main(String[] args) {
TreeSet<Double> ts=new TreeSet<>(new Comparator<Double>() {
@Override
public int compare(Double o1, Double o2) {
double result = o2 - o1;
if (result > 0) {
//加1主要为了防止出现0-1之间的小数强转时变为0
result=result+1;
} else if (result<0) {
result=result-1;
}else {
result=1;
}
return (int)result;
}