关于集合的问题,求助,着急

qq_26229405 2018-01-26 06:05:10
需求:
1.播放器管理播放列表:播放列表实现增删改查
2.播放列表分为:主播放列表和普通播放列表
3.播放列表管理歌曲:歌曲实现增删改查,每个普通播放列表独立,但是向普通播放列表添加歌曲时同步向主播放列表添加,也就是主播放列表有所有普通播放列表的歌曲和本身自己添加的歌曲
目前遇到问题:
每个普通播放列表独立,添加的歌曲能添加到所有的播放列表中,求大神帮忙!!
代码如下:
1.播放器类:管理播放列表
/**
* 播放器类
*/
public class PlayListCollection {
private static Map playListMap = new HashMap();//存放播放列表的集合
//无参构造方法
public PlayListCollection() {
}
//带参构造方法
public PlayListCollection(Map playListMap) {
this.setPlayListMap(playListMap);

}
//getset方法封装属性
public Map getPlayListMap() {
return playListMap;
}
public void setPlayListMap(Map playListMap) {
this.playListMap = playListMap;
}
Scanner sc = new Scanner(System.in);
/**
* 添加播放列表
*/
public void addPlayList(PlayList playList) {
if ("主播放列表".equals(playList.getPlayListName())) {
playListMap.put(playList.getPlayListName(), playList);
return;
}
Scanner sc = new Scanner(System.in);
System.out.println("输入要添加播放列表的名称:");
String name = sc.next();
while (true) {
if (playListMap.containsKey(name)) {
System.out.println("播放列表名称已存在,请重新输入!");
break;
} else
playList.setPlayListName(name);
playListMap.put(name, playList);
System.out.println("播放列表添加成功!");
break;
}
}
/**
* 删除播放列表
*/
public void deletPlayList(PlayList playList) {
System.out.println("请输入要删除的播放列表名称:");
String name = sc.next();
if (name.equals("主播放列表")) {
System.out.println("主播放列表不可删除,请输入普通列表名称进行删除!");
return;
}
if (playListMap.containsKey(name)) {
playListMap.remove(name);
System.out.println("删除播放列表成功!");
} else System.out.println("未找到该播放列表,请重新输入播放列表名称删除!");
}
/**
* 通过名字查询
*/
public PlayList searchPlayListByName(String playListName) {
System.out.println("请输入要查询的播放列表名称:");
String name = sc.next();
Set<String> keySet = playListMap.keySet();
if (playListMap.isEmpty() | !keySet.contains(name)) {
System.out.println("结果未找到,请重新输入!");
} else {
for (String key : keySet) {
if (name.equals(key)) {
System.out.println("结果找到了,播放列表名称为:" + key);
break;
}
}
}
return null;
}
}
2.播放列表类:管理歌曲
/**
* 播放列表类
*/
public class PlayList {
private String playListName;//播放列表名称
private List<Song> musicList = new ArrayList();//播放列表中的歌曲集合

//无参构造方法
public PlayList() {
}

//带参构造方法
public PlayList(String playListName) {
this.playListName = playListName;
}

//getset方法封装属性
public String getPlayListName() {
return playListName;
}

public void setPlayListName(String playListName) {
this.playListName = playListName;
}

public List<Song> getMusicList() {
return musicList;
}

public void setMusicList(List<Song> musicList) {
this.musicList = musicList;
}

/**
* 将歌曲添加到播放列表
*
* @param song
*/
Scanner sc = new Scanner(System.in);
PlayListCollection plc = new PlayListCollection();

/**
* 向主播放列表添加歌曲
*/
public void addMainPlayList() {
System.out.println("将歌曲添加到主播放列表");

addToPlayList();
}

/**
* 将歌曲添加到普通列表
*/
public void addToOrdinaryPlayList() {
System.out.println("将歌曲添加到普通播放列表");
System.out.println("请输入播放列表名称:");
String plname = sc.next();
if (plc.getPlayListMap().containsKey(plname)) {
addToPlayList();
} else System.out.println("播放列表不存在,请先创建播放列表");
}

/**
* 添加歌曲
*/
public void addToPlayList() {
int songNum = 0;
String id = null;
String name = null;
String singer = null;
System.out.println("请输入要添加的歌曲数量:");
//增加输入整数判断
boolean flag = true;
while (flag) {
try {
songNum = sc.nextInt();
flag = false;
} catch (Exception e) {
System.out.println("请输入整数");
sc.nextLine();
}
}
for (int i = 0; i < songNum; i++) {
System.out.println("请输入第" + (i + 1) + "首歌曲:");
System.out.println("请输入歌曲id:");
id = sc.next();
System.out.println("请输入歌曲名称:");
name = sc.next();
System.out.println("请输入演唱者:");
singer = sc.next();
Song song = new Song(id, name, singer);
musicList.add(song);
System.out.println("歌曲添加成功!");
}
}
}

/**
* 从播放列表删除歌曲
*
* @param id
*/
public void deleteSong(Song id) {
System.out.println("请输入歌曲id进行删除:");
String songId = sc.next();
Iterator it = musicList.iterator();
if (musicList.size() == 0) {
System.out.println("歌曲id不存在,请重新输入进行删除!");
return;
}
while (it.hasNext()) {
Song song = (Song) it.next();
if (song.getId() == null || !songId.equals(song.getId())) {
System.out.println("歌曲id不存在,请重新输入进行删除!");
return;
} else if (songId.equals(song.getId())) {
musicList.remove(song);
System.out.println("删除成功!");
}
}
}

/**
* 显示播放列表中所有歌曲
*/
public void displayAllSong() {
System.out.println("请输入播放列表名称:");
String plname = sc.next();
if (plname.equals("主播放列表")) {
System.out.println("播放列表中所有歌曲为:");
for (int i = 0; i < musicList.size(); i++) {
System.out.println(musicList.get(i));
}
}
if (plc.getPlayListMap().containsKey(plname) & !plname.equals("主播放列表")) {
for (int i = 0; i < musicList.size(); i++) {
System.out.println(musicList.get(i));
}
} else System.out.println("播放列表不存在!");
}

@Override
public String toString() {
return playListName;
}
}
3.歌曲类:
public class Song {
private String id;//歌曲id
private String name;//歌曲名称
private String singer;//演唱者

//无参构造方法
public Song() {
}

//带参构造方法
public Song(String id, String name, String singer) {
this.setId(id);
this.setName(name);
this.setSinger(singer);
}

//getset方法封装属性
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;
}

/**
* 重写equles方法
*
* @param
* @return
*/
@Override
public boolean equals(Object obj) {
//先判断对象是否相等,若相等返回true,不需要继续比较属性
if (this == obj) return true;
//判断obj是否为Cat类的对象,若是,则强制类型转换,并输出属性比较结果
if (obj.getClass() == Song.class) {
Song song = (Song) obj;
return song.getId().equals(id) && song.getName().equals(name) && song.getSinger().equals(singer);
}
return false;

}

/**
* 重写hashCode方法
*
* @return result
*/
@Override
public int hashCode() {
int result = id != null ? id.hashCode() : 0;
result = 31 * result + (name != null ? name.hashCode() : 0);
result = 31 * result + (singer != null ? singer.hashCode() : 0);
return result;
}

/**
* 重写toString方法
*
* @return
*/
@Override
public String toString() {
return "[" +
"歌曲编号:" + this.getId() +
", 歌曲名称:" + this.getName() +
", 演唱者:" + this.getSinger() +
']';
}
}
4.测试类:
public class TestDemo {
public static void main(String[] args) throws IOException {
Song song = new Song();
PlayList pl = new PlayList("主播放列表");
PlayListCollection plc = new PlayListCollection();
plc.addPlayList(pl);
//添加到主播放列表
pl.addMainPlayList();
//添加到普通播放列表
pl.addToOrdinaryPlayList();
...全文
454 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sugarless_ 2018-01-30
  • 打赏
  • 举报
回复
歌曲添加到普通列表的方法addToOrdinaryPlayList() 中不少有一个addToPlayList()方法吗,这是向普通列表添加歌曲的方法吧。在这句话后面加上addMainPlayList();这是将这首歌曲加入主播放列表的方法。
qq_26229405 2018-01-29
  • 打赏
  • 举报
回复
问题是:每个普通播放列表独立,添加的歌曲能添加到所有的播放列表中,这个未能实现
  • 打赏
  • 举报
回复
这么长?是啥问题啊?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧