还是有点不清楚主播放列表的实例和普通播放列表实例的区分
就是将歌曲添加到普通播放列表当中,播放列表里面不就一个集合实例么(是用来装主播放列表里面的歌曲的啊) 那么装普通播放列表的集合是怎么实现的
39
收起
正在回答
4回答
例如List存放了所有的列表,包括普通列表和主播放列表,那怎么区分呢用map的KEY来区分,一个map就是一个播放列表,key是列表的名字,value存放Song对象,但又不止于一个Song,所以这个value存放的又是一个list列表。整体数据结构就是:List<Map<String,List<Song>>>。祝:学习愉快
好帮手慕雪
2017-09-19 11:19:37
1)87行
Song songInfo = new Song("songId", "songName", "singerName");去掉双引号。 Song songInfo = new Song(songId, songName, singerName);
2)94不对应该先找到主播放列表的歌曲list,然后添加到list中。把91行的for循环移动到80行上面,修改里面的内容,功能就是查询主播放列表的歌曲。
3)
public void exportPlayList() { for(int i = 0; i < musicList.size(); i++) { System.out.println(musicList.get(i).toString());//Song有没有重写toString()?如果写了就改成musicList.get(i),如果没有就一个一个输出,例如Song song=musicList.get(i);然后输出song.getName().... } }
自己再调一下类似的问题,如果还有调不出来另起一个问答。内容太长不容易被发现。
荒小北158
2017-09-19 10:01:48
package com.imooc.test; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Scanner; import java.util.Set; import com.imooc.play.PlayList; import com.imooc.play.PlayListCollection; import com.imooc.play.Song; public class TestDemo { //主菜单列表 public static void mainMenu() { System.out.println("**************************"); System.out.println("**主菜单**"); System.out.println("1--播放列表管理"); System.out.println("2--播放器管理"); System.out.println("0--退出"); System.out.println("**************************"); System.out.println("请输入对应数字进行操作:"); } // 播放列表菜单 public static void playListMenu() { System.out.println("*********************"); System.out.println("1--将歌曲添加到主播放列表"); System.out.println("2--将歌曲添加到普通播放列表"); System.out.println("3--通过歌曲id查询播放列表中的歌曲"); System.out.println("4--通过歌曲名称查询播放列表中的歌曲"); System.out.println("5--修改播放列表中的歌曲"); System.out.println("6--删除播放列表中的歌曲"); System.out.println("7--显示播放列表中的所有歌曲"); System.out.println("8--导出歌单"); System.out.println("9--返回上一级菜单"); System.out.println("*********************"); System.out.println("请输入对应的数字进行列表管理:"); } //播放器列表管理菜单 public static void playListCollectionMenu() { System.out.println("****************"); System.out.println("1--向播放器添加播放列表"); System.out.println("2--从播放器删除播放列表"); System.out.println("3--通过名字查询播放列表名称"); System.out.println("4--显示所有播放列表名称"); System.out.println("9--返回上一级菜单"); System.out.println("*****************"); System.out.println("请输入对应的数字进行播放器管理:"); } public static void main(String[] args) { //创建一个ArrayList实例,用于存储所有的播放列表信息(包含了 播放列表及其多对应的歌曲信息) List<PlayListCollection> bigList = new ArrayList<PlayListCollection>(); //创建一个播放列表的实例 PlayList playList = new PlayList("主播放列表",new ArrayList<Song>()); int n = -1; //创建一个hashMap用于存储列表信息 作为传入给playListCollection的媒介 HashMap<String,PlayList> map = new HashMap<String,PlayList>(); map.put("主播放列表", playList); //创建一个播放器的实例 PlayListCollection playListCollection = new PlayListCollection(map);//将map传入,也就是将主播放列表作为key值传入 bigList.add(playListCollection); //将map对象存储在list中 while( n!=0 ) {//用于控制退出程序 mainMenu();//调用菜单列表方法 Scanner in = new Scanner(System.in); n = in.nextInt();//输入对应列表数字 switch(n) { case 1: while(n!=9) {//while循环用于控制返回上一级菜单 playListMenu();//播放列表菜单 n = in.nextInt();//输入对应列表数字 switch(n) { //将歌曲添加到主播放列表 case 1: System.out.println("将歌曲添加到主播放列表\n请输入要添加的歌曲的数量:"); n = in.nextInt(); for (int i = 0; i < n; i++) { System.out.println("请输入第" + (i + 1) + "首歌曲\n请输入歌曲id:"); String songId = in.next();//输入歌曲的id System.out.println("请输入歌曲的名称:"); String songName = in.next();//输入歌曲的名字 System.out.println("请输入演唱者:"); String singerName = in.next();//输入歌手的名字 Song songInfo = new Song("songId", "songName", "singerName");//为歌曲信息赋值 playList.addToPlayList(songInfo); //遍历keySet for(String key:map.keySet()) { //找到主播放列表 if("主播放列表".equals(key)) { map.put(key,playList); playListCollection.setPlayListMap(map);//播放列表存储歌曲信息 break;//添加完毕则跳出循环 } } } break;//添加完歌曲信息后跳出switch //将歌曲添加到普通播放列表 case 2: System.out.println("将歌曲添加到普通播放列表\n请输入要添加的播放列表名称:"); String strPlayListName = in.next();//输入播放列表的名称 /* * 首先要判断歌曲添加到的普通播放列表存不存在 */ boolean flag = true; //取得keySet Set<String> keySet = playListCollection.getPlayListMap().keySet(); //遍历keySet for(String key:keySet) { //判断playListMap中是否存在要添加的播放列表 if(strPlayListName.equals(key)) { // 进入if说明找寻到了想要添加歌曲的播放列表,在if 语句里面完成歌曲的添加 System.out.println("请输入要添加的歌曲的数量:"); n = in.nextInt(); for (int i = 0; i < n; i++) { System.out.println("请输入第" + (i + 1) + "首歌曲\n请输入歌曲id:"); String songId = in.next();//输入歌曲的id //判断添加歌曲的id是否存在于主播放列表 for(int k = 0; k < playList.getMusicList().size(); k++) { if(songId.equals(((Song)(playList.getMusicList()).get(k)).getId())) { /* * 这里直接将主播放列表中的歌曲添加到普通播放列表中 这里有未完成代码! */ flag = false; break;//找到与主播放列表里面相同的id,直接跳出循环 } } if(flag) { flag = true; System.out.println("该歌曲在主播放列表不存在,继续输入歌曲的其他信息!"); } System.out.println("请输入歌曲的名称:"); String songName = in.next();//输入歌曲的名字 System.out.println("请输入演唱者:"); String singerName = in.next();//输入歌手的名字 //判断主播放列表当中是否存在所要添加的歌曲id Song songInfo = new Song("songId", "songName", "singerName");//为歌曲信息赋值 playList.addToPlayList(songInfo);//播放列表存储歌曲信息 } flag = false; } } if(flag) { System.out.println("该播放列表不存在,请先将播放列表添加到播放器中!"); } break; //通过歌曲id查询播放列表中的歌曲 case 3: System.out.println("通过歌曲id查询播放列表中的歌曲:\n请输入要查询的播放列表名称:"); String playListName = in.next();//输入播放列表的名称 flag = true; //判断播放列表是否存在 if(playListCollection.getPlayListMap().containsKey(playListName)) { System.out.println("请输入要查询的歌曲:"); String songId = in.next(); //判断歌曲存不存在 if(playList.searchSongById(songId) == null) { System.out.println("该歌曲在播放列表"+playListName+"不存在!"); } else { System.out.println("歌曲的信息为:"+playList.searchSongById(songId).toString()); } } else { System.out.println("该播放列表不存在!请重新操作!"); } break; //通过歌曲名称查询播放列表中的歌曲 case 4: System.out.println("通过歌曲的名称查询播放列表中的歌曲\n请输入要查询的播放列表名称:"); playListName = in.next();//输入播放列表的名称 flag = true; //判断播放列表是否存在 if(playListCollection.getPlayListMap().containsKey(playListName)) { System.out.println("请输入要查询的歌曲名称:"); String songName = in.next(); //判断歌曲存不存在 if(playList.searchSongByName(songName) == null) { System.out.println("该歌曲在播放列表"+playListName+"不存在!"); } else { System.out.println("歌曲的信息为:"+playList.searchSongByName(songName).toString()); } } else { System.out.println("该播放列表不存在!请重新操作!"); } break; //修改播放列表中的歌曲 case 5: System.out.println("修改播放列表中的歌曲:\n请输入要修改的歌曲id:"); String songId = in.next(); //判断歌曲id存不存在 if(playList.searchSongById(songId) == null){ System.out.println("该歌曲不存在!请重新操作!"); } else { System.out.println("请输入修改后的歌曲名称:"); String songName = in.next(); System.out.println("请输入修改后的歌手名字:"); String singerName = in.next(); for(String key:playListCollection.getPlayListMap().keySet()) { for(int i = 0; i<playListCollection.getPlayListMap().get(key).getMusicList().size();i++) { if(songId.equals(((Song)(playListCollection.getPlayListMap().get(key).getMusicList().get(i))).getId())){ ((Song)(playListCollection.getPlayListMap().get(key).getMusicList().get(i))).setName(songName); ((Song)(playListCollection.getPlayListMap().get(key).getMusicList().get(i))).setSinger(singerName); break; } } break; } System.out.println("修改成功!"); } break; //删除播放列表中的歌曲 case 6: System.out.println("删除播放列表中的歌曲:\n请输入要删除的歌曲id:"); songId = in.next(); playList.deleteSong(songId); break; //显示播放列表中的歌曲 case 7: System.out.println("显示播放列表中的所有歌曲\n请输入要显示的播放列表名称:"); playListName = in.next(); flag = true; for(String key:playListCollection.getPlayListMap().keySet()){ if(playListName.equals(key)) { Iterator<PlayListCollection> it = bigList.iterator(); while(it.hasNext()) { it.next().getPlayListMap().get(key).exportPlayList(); } flag = false; break; } } if(flag) { System.out.println("该播放列表不存在!请重新操作"); } break; //导出歌单 (输入输出流) case 8: break; case 9: n = 9; break; } } break; //播放器管理 case 2: while(n!=9) { playListCollectionMenu();//播放器管理列表 n = in.nextInt();//输入列表对应数字 switch(n) { /* * 向播放器添加列表 */ case 1: System.out.println("向播放器添加播放列表\n输入要添加的播放列表名称:"); String playListName = in.next(); playList.setPlayListName(playListName);//列表名称的赋值 playListCollection.addPlayList(playList); break; //从播放器中删除播放列表 case 2: System.out.println("输入要删除的播放列表的名称:"); playListName = in.next();//输入播放列表的名称 if(playListCollection.getPlayListMap().containsKey(playListName)) { playListCollection.deletePlayList(playList); } else { System.out.println("该播放列表不存在!请重新操作!"); } break; //通过播放列表的名称查询列表内的信息 case 3: System.out.println("通过名字查询播放列表信息:"+"\n请输入要查询的播放列表名称:"); playListName = in.next();//输入要查询的播放列表名称 playListCollection.searchPlayListByName(playListName); break; //显示所有的播放列表名称 case 4: playListCollection.displayPlayListName(); } } break; case 0: n = 0; System.out.println("谢谢使用!"); break; } } } }
荒小北158
2017-09-19 10:00:52
package com.imooc.play; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class PlayList { private String playListName;//播放列表的名称 private List<Song> musicList = new ArrayList<Song>();//储存歌曲信息的List集合 //无参构造方法 public PlayList() { } //带参构造方法 public PlayList(String playListName, List musicList) { super(); this.playListName = playListName; this.musicList = musicList; } //getter/setter public String getPlayListName() { return playListName; } public void setPlayListName(String playListName) { this.playListName = playListName; } public List getMusicList() { return musicList; } public void setMusicList(List musicList) { this.musicList = musicList; } //将歌曲添加到播放列表 public void addToPlayList(Song song) { if(musicList.contains(song)){ System.out.println("歌曲已经存在于播放列表!请勿重复操作!"); } else { musicList.add(song); } } //通过id查询歌曲 public Song searchSongById(String id) { boolean flag = false; int i; for(i = 0; i < musicList.size(); i++) { if(id.equals((musicList.get(i)).getId())) { flag = true; break; } } if(flag) { return musicList.get(i); } else { return null; } } //通过名称查询歌曲 public Song searchSongByName(String n) { int i; boolean flag = false; for( i = 0; i < musicList.size(); i++) { if (((Song)(musicList.get(i))).getName() == n) { flag = true; break; } } if(flag) { return musicList.get(i); } else{ return null; } } //修改歌曲 public void updateSong(Song song) { } //从播放列表中删除歌曲 public void deleteSong(String id) { boolean flag = false; int n = 0; for (int i = 0; i < musicList.size(); i++) { if (id.equals(((Song) musicList.get(i)).getId())) { flag = true; n = i; } } if (flag) { musicList.remove(n); } else { System.out.println("您要删除的歌曲不在播放列表中!"); } } //显示播放列表中的所有歌曲 public void exportPlayList() { for(int i = 0; i < musicList.size(); i++) { System.out.println(musicList.get(i).toString()); } } }
package com.imooc.play; public class Song { private String id;//歌曲的id private String name;//歌曲名称 private String singer;//演唱者 //构造方法 public Song(String id, String name, String singer) { super(); this.id = id; this.name = name; this.singer = singer; } //getter/setter public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSinger() { return singer; } public void setSinger(String singer) { this.singer = singer; } //重写toString() @Override public String toString() { return "[歌曲id:" + id + ", 歌曲:" + name + ", 演唱者:" + singer + "]"; } //重写hashCode和equals @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((id == null) ? 0 : id.hashCode()); result = prime * result + ((name == null) ? 0 : name.hashCode()); result = prime * result + ((singer == null) ? 0 : singer.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Song other = (Song) obj; if (id == null) { if (other.id != null) return false; } else if (!id.equals(other.id)) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; if (singer == null) { if (other.singer != null) return false; } else if (!singer.equals(other.singer)) return false; return true; } }
package com.imooc.play; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; public class PlayListCollection { private Map<String,PlayList> playListMap = new HashMap<String,PlayList>(); //无参构造方法 public PlayListCollection() { } //带参构造方法 public PlayListCollection(Map<String, PlayList> playListMap) { super(); this.playListMap = playListMap; } //setter/getter public Map<String, PlayList> getPlayListMap() { return playListMap; } public void setPlayListMap(Map<String, PlayList> playListMap) { this.playListMap = playListMap; } //添加播放列表 public void addPlayList(PlayList playList) { boolean flag = true; //取得keySet Set<String> keySet = playListMap.keySet(); //遍历keySet for(String key:keySet) { //遍历中如果找到map中的key值与我们添加的播放列表名相同则无法添加 if((playList.getPlayListName()).equals(key)) { System.out.println("该播放列表存在!\n该播放列表的名称为:"+key); flag = false; break; } } if(flag) { playListMap.put(playList.getPlayListName(), null); } } //删除播放列表 public void deletePlayList(PlayList playList) { } //通过名字查询 public PlayList searchPlayListByName(String playListName) { boolean flag = true; //取得keySet Set<String> keySet = playListMap.keySet(); //遍历keySet for(String key:keySet) { //如果要查询的列表名字与某个key相同 则输出该列表的相关信息 if(playListName.equals(key)) { System.out.println("该播放列表存在!\n该播放列表的名称为:"+key+ "\n播放列表中的所有歌曲为:"+((Song)(playListMap.get(key).getMusicList())).toString()); flag = false; break; } if(flag) { System.out.println("该播放列表不存在!"); } } return null; } //显示所有播放列表名称 public void displayPlayListName() { //通过keySet来输出playListMap中所有的key(播放列表名称) Set<String> keySet = playListMap.keySet(); System.out.println("显示所有的播放列表名称:"+"\n播放列表的名称:"); for(String key:keySet) { System.out.println(key); } } }
Android零基础入门2018版
- 参与学习 人
- 提交作业 5461 份
- 解答问题 7238 个
此次推出的专题为Android攻城狮培养计划的第一部分语法与界面基础篇,将带大家从0开始学习Android开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星