从零开始的Java开发1-6-5 集合综合案例:播放器管理
Posted karshey
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从零开始的Java开发1-6-5 集合综合案例:播放器管理相关的知识,希望对你有一定的参考价值。
文章目录
播放器管理:概述和需求分析
需求分析:
- 播放列表管理
- 播放器管理
播放列表管理主要功能:
- 增:将歌曲添加到主播放列表
- 增:将歌曲添加到普通播放列表
- 查:通过歌曲id查询播放列表中的歌曲
- 查:通过歌曲名称查询播放列表中的歌曲
- 改:修改播放列表中的歌曲
- 删:删除播放列表中的歌曲
- 显示:显示所有歌曲
播放器管理主要功能:
- 增:向播放器添加播放列表
- 删:从播放器删除播放列表
- 查:通过名字查询播放列表
- 显示:显示所有播放列表的名称
详细设计
类:
- 歌曲类
Song
- 播放列表类
PlayList
- 播放器类
PlayListCollection
- 测试类
TestDemo
歌曲类Song
:
属性:
- 歌曲id
- 歌曲名name
- 演唱者singer
方法:
- 构造方法
- getter和setter
- hashCode()和equals()
- toString()
播放列表类 PlayList
:
属性:
- 播放列表名称PlayListName
- 播放列表中的歌曲集合musicList
方法:
- 构造方法
- getter和setter
- 将歌曲添加到播放列表:
public void addToPlayList(Song song)
- 显示播放列表中所有歌曲:
public void displayAllSong()
- 通过id查询歌曲:
public Song searchSongById(String id)
- 通过name查询歌曲:
public Song searchSongByName(String name)
- 修改歌曲:
public void updateSong(String id,Song song)
- 删除歌曲:
public void deleteSong(String id)
- 通过歌曲名进行排序:
public void sortBySongName()
ps:会有一个主播放列表,里面会有所有的歌。
播放器类PlayListCollection
:
属性:
- 存放播放列表的集合:
playListMap
方法:
- 构造方法
- getter和setter
- 添加播放列表:
public void addPlayList(PlayList playList)
- 删除播放列表:
public void deletePlayList(PlayList playList)
- 通过名字查询:
public PlayList searchPlayListByName(String playListName)
- 显示所有播放列表名称:
public void displayPlayListName()
歌曲类Song
注意,写完一个类就要测试一下。
public class Song
private String id;
private String name;
private String singer;
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()
return Objects.hash(id, name, singer);
@Override
public boolean equals(Object obj)
// 判断对象是否相等
if (this == obj)
return true;
// 类相同
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 + "]";
播放列表类PlayList
public class PlayList
private String playListName;// 播放列表名称
private List<Song> musicList;// 播放列表歌曲集合
// 构造方法 参数是播放列表的名称
public PlayList(String playListName)
this.playListName = playListName;
musicList = new ArrayList<Song>();
// getter setter
public String getPlayListName()
return playListName;
public void setPlayListName(String playListName)
this.playListName = playListName;
// 将歌曲添加到播放列表
public void addToPlayList(Song song)
// 要排除重复添加的情况
boolean flag = false;
for (Song s : musicList)
if (s.equals(song))
flag = true;
break;
if (!flag)
musicList.add(song);
else
System.out.println("歌曲《" + song.getName() + "》已经在播放列表中!");
// 显示播放列表中的所有歌曲
public void displayAllSong()
System.out.println("播放列表中的所有歌曲为:");
for (Song song : musicList)
System.out.println(song.toString());
System.out.println();
// 根据歌曲id查询歌曲
public Song searchSongById(String id)
Song ans = null;
for (Song song : musicList)
if (id.equals(song.getId()))
ans = song;
break;
return ans;
// 根据歌曲名称查询歌曲
public Song searchSongByName(String name)
Song ans = null;
for (Song song : musicList)
if (name.equals(song.getName()))
ans = song;
break;
return ans;
// 修改播放列表中歌曲信息
public void updateSong(String id, Song song)
Song s = searchSongById(id);
if (s == null)
System.out.println("id为" + id + "的歌曲未找到!");
else
musicList.remove(s);
musicList.add(song);
System.out.println("修改成功!");
// 删除播放列表中歌曲信息
public void deleteSong(String id)
Song s = searchSongById(id);
if (s == null)
System.out.println("id为" + id + "的歌曲未找到!");
else
musicList.remove(s);
System.out.println("删除成功!");
播放器类PlayListCollection
//播放列表集合
public class PlayListCollection
Map<String, PlayList> playListMap;// 存放播放列表集合
public PlayListCollection()
playListMap = new HashMap<String, PlayList>();
public Map<String, PlayList> getPlayListMap()
return playListMap;
public void setPlayListMap(Map<String, PlayList> playListMap)
this.playListMap = playListMap;
// 添加播放列表
public void addPlayList(PlayList playList)
playListMap.put(playList.getPlayListName(), playList);
// 删除播放列表
public void deletePlayList(PlayList playList)
playListMap.remove(playList.getPlayListName());
System.out.println("删除成功!");
// 查询播放列表
public PlayList searchPlayListByName(String playListName)
PlayList playList = null;
Set<String> playListSet = playListMap.keySet();
for (String s : playListSet)
if (s.equals(playListName))
playList = playListMap.get(s);
break;
return playList;
// 显示播放列表
public void displayListName()
System.out.println("所有播放列表名称为:");
Set<String> playListSet = playListMap.keySet();
for (String s : playListSet)
System.out.println(s);
System.out.println();
主业务代码
三个菜单
星号:
//星号
public void star()
System.out.println("*****************************");
主菜单:
//主菜单
public void mainMenu()
star();
System.out.println(" 主菜单");
System.out.println(" 1-播放列表管理");
System.out.println(" 2-播放器管理");
System.out.println(" 0-退出");
star();
播放列表管理菜单:
//播放列表管理菜单
public void playListMenu()
star();
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(" 0-返回上一级菜单");
star();
播放器菜单:
//播放器菜单
public void playerMenu()
star();
System.out.println(" 播放器管理");
System.out.println(" 1-向播放器添加播放列表");
System.out.println(" 2-从播放器删除播放列表");
System.out.println(" 3-通过名字查询播放列表");
System.out.println(" 4-显示所有播放列表的名称");
System.out.println(" 0-返回上一级菜单");
star();
总体代码
public class TestDemo
public static void main(String[] args)
TestDemo td = new TestDemo();
td.test();
// 主流程
public void test()
// 创建一个主播放列表
PlayList mainPlayList = new PlayList("mainPlayList");
// 创建喜欢的音乐 播放列表
PlayList love = null;
// 创建播放列表容器(播放器)
PlayListCollection plc = new PlayListCollection();
plc.addPlayList(mainPlayList);
// 输入
Scanner sc = new Scanner(System.in);
int ip1 = 0, ip2 = 0, ip3 = 0;
while (true)
mainMenu();
System.out.println("请输入对应数字进行操作:");
ip1 = sc.nextInt();// 这里就不处理异常了
if (ip1 == 0)
System.out.println("退出!");
break;
switch (ip1)
case 1:
while (true)
playListMenu();
System.out.println("请输入对应数字进行操作:");
ip2 = sc.nextInt();
if (ip2 == 0)
System.out.println("退出!");
break;
switch (ip2)
case 1:
System.out.println(" 1-将歌曲添加到主播放列表");
System.out.println("请输入要添加的歌曲的个数:");
int temp = sc.nextInt();
for (int i = 0; i < temp; i++)
System.out.println("请输入第" + (i + 1) + "首歌曲的信息:id、歌曲名、演唱者");
String id, name, singer;
id = sc.next();
name = sc.next();
singer = sc.next();
mainPlayList.addToPlayList(new Song(id, name, singer));
System.out.println("添加成功!");
mainPlayList.displayAllSong();
break;
case 2:
System.out.println(" 2-将歌曲添加到普通播放列表");
System.out.println("请输入要添加的播放列表名称:");
String name = sc.next();
// 判断此播放列表是否存在
PlayList pl = plc.searchPlayListByName(name);
if (pl != null)
System.out.println("请输入要添加的歌曲的个数:");
int temp = sc.nextInt();
for (int i = 0; i < temp; i++)
System.out.println("请输入第" + (i + 1) + "首歌曲的信息:id、歌曲名、演唱者");
String id, namee, singer;
id = sc.next();
namee = sc.next();
singer = sc.next();
// 判断这首歌是否已经在播放列表中
Song song 从零开始的Java开发1-3-3 综合案例:学生信息管理
从零开始的Java开发1-6-1 集合排序:对整型和字符串Comparator接口Comparable接口
从零开始的Java开发1-5-4 ArrayListHashSetHashMap 概述与案例