这为什么能实现排序?

来源: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接口并重写了方法,从而实现排序

http://img.mukewang.com/climg/5f696ad909e88ded04790182.jpg

返回age2-age1表示在进行排序时,当age2-age1,如果两个数比较结果小于0,说明age2<age1,就把前一个数和后一个数交换,也就是把小的数放后面了;如果结果是大于0,说明age2大,位置不变,从而实现了降序排序

同学可以再去回顾下上一小节视频,老师有具体的讲解到相关内容

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!


0

0 学习 · 16556 问题

查看课程