歌曲排序时,测试代码中无法调用sort方法。

歌曲排序时,测试代码中无法调用sort方法。

具体遇到的问题

歌曲排序时,由于测试代码在主方法之外,无法调用sort方法。

报错信息的截图

相关课程内容截图

图片描述

尝试过的解决思路和结果

粘贴全部相关代码,切记添加代码注释(请勿截图)

在这里输入代码
public class PlayList implements Comparator<Song> {
@Override
	public int compare(Song o1, Song o2) {
		// TODO Auto-generated method stub
		String Id1=o1.getId();
		String Id2=o1.getId();
		int n=Id1.compareTo(Id2);
				return n;
			}
}

case 8 :
						System.out.println("对主播放列表歌单进行排序");
						
						Collections.sort(mainPlayList, new PlayList(mainPlayList.getPlayListName()));
						
						break;

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,

1、对主播放列表类中的歌曲进行排序是对歌曲进行排序,应该让Song类实现Comparator或者Comparable接口。

Collections.sort()方法可以传一个参数,也可以传2个参数。如下:

a. sort(List<T> list)

http://img1.sycdn.imooc.com//climg/5f86d07d09e9422c06430215.jpg

调用该方法时,Song类要实现Comparable接口。

b. sort(List<T> list, Comparator<? super T> c)

http://img1.sycdn.imooc.com//climg/5f86d085097b8da406380175.jpg

使用该方法时,需要传入一个Comparator实现类。

2、以调用sort(List<T> list)方法为例,参考代码如下:

Song类如下:

http://img1.sycdn.imooc.com//climg/5f86d1aa0973bb6504860190.jpg

调用如下:

http://img1.sycdn.imooc.com//climg/5f86d1ee09e8bfe405140292.jpg

同学也可以回顾一下之前课程 对宠物猫按名字进行排序,课程链接为

https://class.imooc.com/lesson/1439#mid=32892


  • 幕布斯2414477 提问者 #1
    老师。歌曲排序时,是在PlayList中排序,难道不是在PlayList类中实现comparator或者Comparable接口吗?为什么是在Song类中实现排序接口?
    2020-10-15 13:06:31
  • 幕布斯2414477 提问者 #2
    为什么最终调用Collections.sort()函数时,不是Collections.sort(mainPlayList)? mainPlayList本身不就是一个List。
    2020-10-15 17:11:30
  • 好帮手慕阿慧 回复 提问者 幕布斯2414477 #3
    同学你好,调用sort(List list)方法需要传入的是一个List集合。 在同学代码中,mainPlayList变量是PlayList类型,不是List集合,所以Collections.sort(mainPlayList)会报错。 祝学习愉快~
    2020-10-15 18:37:03
好帮手慕阿慧 2020-10-15 16:37:37

同学你好,哪个类实现comparator或Comparable接口,要看同学想要排序的集合中所保存的对象类型是什么。

Song类实现排序接口,代表对Song对象进行排序,如按照歌曲id进行排序。PlayList类实现排序接口,代表对PlayList播放列表对象进行排序,如按照播放列表名称进行排序

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师