关于排序问题
@Override
public int compareTo(Song o) {
String name1=this.getName();
String name2=o.getName();
int n=name1.compareTo(name2);
return 0;
}
这样写是通过名字升序排列吧;
请问老师。
String name1=this.getName();
String name2=o.getName();
先定义 name1=o.getName();
后定义name2=this.getName();
int n=name1.compareTo(name2); 还是升序吗?
这个先后定义name的值影响排序吗?
问题2:
public Song searchSongById(String id) {
Song song = null;
// ID是唯一的
for (Song song1 : musicList) {
if (song1.getId().equals(id)) {
// 如果相同就是找到了
song = song1;
break;
}
为什么一定要先定义 Song song 对象为null呢?
不定义直接开始循环不可以吗?
for (Song song1 : musicList) {
if (song1.getId().equals(id)) {
// 如果相同就是找到了
Sysout.out.println(song1);
break;
正在回答 回答被采纳积分+1
同学你好,关于同学的问题:
1、如下写法是升序排序。
2、如下是降序排序。
compareTo()方法比较的意义如下:
如果返回值小于0,说明第一个比第二个小(不交换两个的位置);
如果返回值等于0,说明第一个等于第二个(不交换两个的位置);
如果返回值大于0,说明第一个比第二个大(交换两个的位置)。
this.getName()是获取当前对象的名称,o.getName()是获取下一个要比较对象的名称。name1.compareTo(name2),这里name1是下一个要比较的对象的名称,name2是当前对象的名称。
如果返回小于0,也就是name1的值比name2的值小,不交换位置。name1是下一个要比较的对象,name2是当前对象,name1的值小于name2的值,是降序排序。
如果返回值大于0,也就是name1比name2的值大,交换name1和name2的位置,变成了 o对象在前,this的对象在后。根据前边已知name1(也就是o对象的名称),大于name2(当前对象名称),这样将变成了降序排序。
3、不定义song为null,可以直接循环。
这里定义Song song = null是最后可以通过song是否为null判断是否找到,如果没有找到,可以给出提示。如果不定义,没有找到时,不能通过song是否为nll判断。
祝学习愉快~
- 参与学习 人
- 提交作业 9393 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星