这为什么能实现排序?
来源:3-5 编程练习
bear_programming
2020-09-21 23:34:29
//按名字升序排序
Collections.sort(catList,new NameComparator());
System.out.println("按名字排序后:");
for(Cat cat:catList) {
System.out.println(cat);
}
//按年龄进行降序排序
Collections.sort(catList,new AgeComparator());
System.out.println("按年龄降序排序后:");
for(Cat cat:catList) {
System.out.println(cat);
}
}
为什么这样能实现排序,不是只是返回值是1 ,0 ,-1吗?这为什么能实现排序
1回答
好帮手慕阿园
2020-09-22
同学你好,sort()方法的第一个参数为要排序的集合对象。第二个参数为实现了Comparator接口的对象
在AgeComparator类中实现了接口Comparator, 重写compare方法进行比较,然后直接在测试类调用Collections.sort方法进行排序;
compare方法返回值是正整数 ,或负整数,或 0 ;相当于一个标志,如果是正整数,就升序,如果是负整数 就降序,如果是0,则不变;
同理,NameComparator类中也实现了Comparator接口并重写了方法,从而实现排序
如

返回age2-age1表示在进行排序时,当age2-age1,如果两个数比较结果小于0,说明age2<age1,就把前一个数和后一个数交换,也就是把小的数放后面了;如果结果是大于0,说明age2大,位置不变,从而实现了降序排序
同学可以再去回顾下上一小节视频,老师有具体的讲解到相关内容
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题