Java集合综合案例——播放器管理
只涉及到控制台的内容
需求分析:
- 播放列表管理
1.将歌曲添加到主播放列表
2.将歌曲添加到普通播放列表
3.通过歌曲id查询播放列表中的歌曲
4.通过歌曲名称查询播放列表中的歌曲
5.修改播放列表中的歌曲
6.删除播放列表中的歌曲
7.显示播放列表中的歌曲
8.导出歌单
- 播放器管理
1.向播放器添加播放功能
2.从播放器删除播放列表
3.通过名字查询播放列表的信息
4.显示所有播放列表名称
歌曲类
package com.project.player;
import java.io.Serializable;
/**
* 歌曲类
* @author 陈
*
*/
public class Song implements Serializable{
private String id;
private String name;//歌曲名称
private String singer;//歌手
public Song() {
}
public Song(String id,String name,String singer) {
this.id=id;
this.name=name;
this.singer=singer;
}
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;
}
@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) {
//判断对象是否相等,相等返回true
if((Song)obj==this)
return true;
//this!=obj
if(obj.getClass()==Song.class) {
Song song=(Song)obj;
return ( (song.getId().equals(id)) && (song.getName().equals(name))
&& (song.getSinger().equals(singer)) );
}
return false;
}
@Override
public String toString() {
return "歌曲信息:id为" + id + ", 歌曲名称为:" + name + ", 演唱者为:" + singer;
}
}
播放列表类
package com.project.player;
import java.util.ArrayList;
import java.util.List;
public class PlayList {
private String playListName;//播放列表的名称
private List<Song> musicList;//播放列表的歌曲集合
public PlayList() {
}
/**
* 构造方法
* @param playListName 播放列表的名称
*/
public PlayList(String playListName) {
this.playListName=playListName;
this.musicList=new ArrayList<Song>();
}
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 要添加的歌曲
*/
public void addToPlayList(Song song) {
//首先排除重复添加的情况
boolean flag=false;
for(Song song1:musicList) {
if(song1.equals(song)) {
flag=true;
break;
}
}
if(flag) {
System.out.println("该歌曲已经存在于播放列表,添加失败!");
}else {
musicList.add(song);
}
}
/**
* 通过歌曲id查询
* @param id 歌曲id
* @return 查询到的歌曲信息
*/
public Song searchSongById(String id) {
Song song=null;
//id是唯一的
for(Song song1:musicList) {
if(song1.getId().equals(id)) {
//如果相等就找到了
song=song1;
break;
}
}
return song;
}
/**
* 通过歌曲name查询
* @param name 歌曲name
* @return 查询到的歌曲信息
*/
public Song searchSongByName(String name) {
Song song=null;
for(Song song1:musicList) {
if(song1.getName().equals(name)) {
//如果相等就找到了
song=song1;
break;
}
}
return song;
}
/**
* 修改播放列表的歌曲信息
* @param id 要修改的歌曲id
* @param song 新的歌曲信息
*/
public void updateSong(String id,Song song) {
//根据id查询到相关的歌曲信息,然后在进行修改
Song song1 =searchSongById(id);
if(song1==null) {
System.out.println("没有找到id为"+id+"对应的歌曲信息!");
}else {
//先移除原来的信息,然后再重新添加
musicList.remove(song1);
musicList.add(song);
System.out.println("修改成功!");
}
}
/**
* 删除播放列表中的指定歌曲信息
* @param id 歌曲的id
*/
public void deleteSong(String id) {
Song song1=searchSongById(id);
if(song1==null) {
System.out.println("没有找到id为"+id+"对应的歌曲信息!");
}else {
musicList.remove(song1