还是有点不清楚主播放列表的实例和普通播放列表实例的区分
就是将歌曲添加到普通播放列表当中,播放列表里面不就一个集合实例么(是用来装主播放列表里面的歌曲的啊) 那么装普通播放列表的集合是怎么实现的
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 份
- 解答问题 7235 个
此次推出的专题为Android攻城狮培养计划的第一部分语法与界面基础篇,将带大家从0开始学习Android开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星