关于歌曲id的唯一性
//添加歌曲
public void addToPalyList(Song song) {
boolean flag = false;
for (Song s : musicList) {
if (s.equals(song)) {
flag = true;
break;
}
}
if (flag) {
System.out.println(song.getName() + "已存在于此列表中,无法添加!");
} else {
musicList.add(song);
}
}
//删除歌曲(id)
public void deleteSong(String id) {
//先判断歌曲id是否在列表中
Song s = null;
for (Song song : musicList) {
if (song.getId().equals(id)) {
s = song;
break;
}
}
if (s != null) {
musicList.remove(s);
System.out.println("该歌曲已从列表中删除!");
System.out.println("删除后的列表歌曲信息为:");
displayAllSong();
} else {
System.out.println("该歌曲不存在!");
}
}
//显示播放列表中所有歌曲
public void displayAllSong() {
System.out.println("主播放列表中所有的歌曲:");
for (Song song : musicList) {
System.out.println(song);
}
}
//根据id找歌(唯一性)
public void searchSongById(String id) {
Song song = null;
for (Song s : musicList) {
if (s.getId().equals(id)) {
song = s;
break;
}
}
if (song == null) {
System.out.println("该列表中没有此歌曲!");
} else {
System.out.println("根据歌曲id查询到的歌曲信息为:");
System.out.println(song);
}
}
//根据歌名找歌(由于格式不同,可能出现同歌名情况)
public void searchSongByName(String name) {
List<Song> list = new ArrayList<>();
for (Song s : musicList) {
if (s.getName().equals(name)) {
list.add(s);
}
}
if (list.size() == 0) {
System.out.println("该列表中没有此歌曲!");
} else {
System.out.println("根据歌名查询到的歌曲信息为:");
for (Song s : list) {
System.out.println(s);
}
}
}
//根据格式找歌(不唯一性,所以返回值可能是多个,可以用集合表示)
public void searchByFormat(String format) {
List<Song> list = new ArrayList<Song>();
int count = 0;
for (Song song : musicList) {
if (song.getFormat().equals(format)) {
list.add(song);
count++;
}
}
if (list.size() != 0) {
System.out.println("根据歌曲格式查询到的歌曲有:" + count + "首");
int num = 1;
for (Song s : list) {
System.out.println("第" + num + "首" + "歌名为:" + s.getName());
}
} else {
System.out.println("该格式的歌曲不存在!");
}
}
//根据歌手找歌
public void searchBySinger(String singer) {
List<Song> list = new ArrayList<Song>();
int count = 0;
for (Song song : musicList) {
if (song.getSinger().equals(singer)) {
list.add(song);
count++;
}
}
if (list.size() != 0) {
System.out.println(singer + "的歌曲有:" + count + "首");
int num = 1;
for (Song s : list) {
System.out.println("第" + num + "首" + "歌名为:" + s.getName());
}
} else {
System.out.println(singer + "的歌曲不存在!");
}
}//定义song对象
Song s1 = new Song("01", "青花瓷", "周杰伦", "MP3");
Song s2 = new Song("02", "红豆", "王菲", "WMA");
Song s3 = new Song("03", "山丘", "李宗盛", "APE");
Song s4 = new Song("04", "消愁", "毛不易", "FLAC");
Song s5 = new Song("05", "听海", "张惠妹", "APE");
Song s6 = new Song("06", "青花瓷", "周杰伦", "APE");
Song s7 = new Song("02", "暧昧", "王菲", "WMA");
//创建PlayLis对象
PlayList pl = new PlayList("主播放列表");
pl.addToPalyList(s1);
pl.addToPalyList(s2);
pl.addToPalyList(s3);
pl.addToPalyList(s4);
pl.addToPalyList(s5);
pl.addToPalyList(s6);
pl.addToPalyList(s7);
//显示播放列表
pl.displayAllSong();
//id找歌
pl.searchSongById("02");
//歌名找歌
pl.searchSongByName("青花瓷");
//歌手找歌
pl.searchBySinger("毛不易");
//格式找歌
pl.searchByFormat("APE");
//删除歌曲(id)
pl.deleteSong("02");
}
public static void main(String[] args) {
Test t = new Test();
// t.testSong();
t.TestPlayList();
歌曲id不唯一的情况也可以添加到列表中啊,那查询是应该用一个集合去返回并遍历输出查询到结果吧?并且老师帮忙看看我歌名找歌的方法这样写可以吗(没有返回值的,和课例的不一样)?
正在回答
同学你好,请将所有代码贴上来,方便我们复制代码直接测试。注:贴代码时,注意不要贴在回复里,会失去代码的格式。可以在回答里贴一下。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星