集合综合案例:播放器

目录

一、需求分析:

二、详细设计:

三、代码:


一、需求分析:

①播放列表管理:

  • 将歌曲添加到主播放列表。
  • 将歌曲添加到播放列表。
  • 通过歌曲id查询播放列表中的歌曲。
  • 通过歌曲名查询播放列表中的歌曲。
  • 修改播放列表中的歌曲。
  • 删除播放列表中的歌曲。
  • 显示播放列表中的所有歌曲。

②播放器管理:

  • 向播放器添加播放功能。
  • 从播放器删除播放列表。
  • 通过名字查询播放列表信息。
  • 显示所有播放列表名称。

二、详细设计:

1.歌曲类(Song):

  • 属性(都是String型):歌曲id(id),歌曲名(name),歌手(singer)。
  • 方法:构造方法,getter和setter方法,hashCode()方法和equals()方法,toString()方法。

2.播放列表类(PlayList):

属性:
①播放列表名称:String playListName

②播放列表的歌曲集合:musicList

方法:

①构造方法

②getter和setter方法

③将歌曲添加到播放列表:public void addToPlayList(Song song)

④显示播放列表中的所有歌曲:public void displayAllSong()

⑤通过歌曲id查询播放列表中的歌曲:public Song searchSongById(String id)

⑥通过名称查询歌曲:public Song searchSongByName(String n)

⑦修改歌曲:public void updateSong(String id,Song name)

⑧从播放列表删除歌曲:public void deleteSong(String id)
⑨按歌曲名进行排序:public void sortBySongName()

3.播放器类(PlayListCollection):

  • 属性:存储播放列表的集合(playListMap):Map
  • 方法:

①构造方法

②getter和setter方法

③向播放列表集合添加播放列表:public void addPlayList(PlayList playlist)
④删除播放列表:public void deletePlayList(PlayList playlist)

⑤通过名字查询:public PlayList searchPlayListByName(String playListName)
⑥显示所有播放列表名称:public void displayPlayListName()

4.测试类(Test)

三、代码:

①Song类:

package com.player;

public class Song {

	private String 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;
	}

	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 (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类:

package com.player;

import java.util.ArrayList;
import java.util.List;

public class PlayList {
	private String playListName;
	private List<Song> musicList;

	/**
	 * 构造方法
	 * 
	 * @param playListName 播放列表的名称
	 */
	public PlayList(String playListName) {
		this.playListName = playListName;
		musicList = new ArrayList<Song>();
	}

	/**
	 * 将歌曲添加到播放列表
	 * 
	 * @param song 要添加的歌曲
	 */
	public void addToPlayList(Song song) {
		// 排除重复添加的情况
		boolean x = false;
		for (Song song1 : musicList) {
			if (song1.equals(song)) {
				x = true;
				break;
			}
		}
		if (x) {
//			System.out.println("这首歌曲已存在于播放列表中,添加失败!");
		} else {
			musicList.add(song);
		}
	}

	/**
	 * 显示播放列表中的所有歌曲
	 */
	public void displayAllSong() {
		if (!musicList.isEmpty()) {
			System.out.println("播放列表中的所有歌曲是:");
			for (Song song : musicList) {
				System.out.println(song);
			}
		} else {
			System.out.println("该播放列表为空!");
		}

	}

	/**
	 * 通过歌曲id查询播放列表中的歌曲
	 * 
	 * @param id 歌曲id
	 * @return 查询到的歌曲信息
	 */
	public Song searchSongById(String id) {
		Song song = null;
		Boolean y = false;
		for (Song song1 : musicList) {
			if (song1.getId().equals(id)) {
				song = song1;
				y = true;
				break;
			}
		}
//		if (y) {
//			System.out.println("找到了!"+song);
//		}else {
//			System.out.println("此列表不存在id为"+id+"的歌曲!");
//		}
		return song;
	}

	/**
	 * 通过名称查询歌曲
	 * 
	 * @param n 歌曲名称
	 * @return 查询到的歌曲信息
	 */
	public Song searchSongByName(String name) {
		Song song = null;
		boolean z = false;
		for (Song song1 : musicList) {
			if (song1.getName().equals(name)) {
				song = song1;
				z = true;
				break;
			}
		}
		if (z) {
			System.out.println("找到了!该歌曲信息是:" + song);
		} else {
			System.out.println("此列表不存在歌名为《" + name + "》的歌曲!");
		}
		return song;
	}

	/**
	 * 修改歌曲
	 * 
	 * @param id   要修改的歌曲id
	 * @param name 修改后的歌曲
	 */
	public void updateSong(String id, Song song) {
		Song song1 = searchSongById(id);
		if (song1 != null) {
			// 先移除原有歌曲,再添加新歌曲
			musicList.remove(song1);
			musicList.add(song);
			System.out.println("修改成功!");
		} else {
			System.out.println("播放列表中不存在该歌曲!");
		}
	}

	/**
	 * 从播放列表删除歌曲
	 * 
	 * @param id 要删除的歌曲id
	 */
	public void deleteSong(String id) {
		Song song = searchSongById(id);
		if (song != null) {
			// 先移除原有歌曲,再添加新歌曲
			musicList.remove(song);
			System.out.println("删除成功!");
		}
	}

	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;
	}
}

③PlayListCollection类:

package com.player;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class PlayListCollection {
	Map<String, PlayList> playListMap; // 存储播放列表的集合

	public PlayListCollection() {
		playListMap = new HashMap<String, PlayList>();
	}

	/**
	 * 向播放列表集合添加播放列表
	 * 
	 * @param playlist 要添加的播放列表
	 */
	public void addPlayList(PlayList playlist) {
		playListMap.put(playlist.getPlayListName(), playlist);
	}

	/**
	 * 删除播放列表
	 * 
	 * @param playlist 要删除的播放列表
	 */
	public void deletePlayList(PlayList playlist) {
		playListMap.remove(playlist.getPlayListName()); // 通过键名删除
		System.out.println("删除成功!");
	}

	/**
	 * 通过名字查询
	 * 
	 * @param playListName 播放列表名称
	 * @return 播放列表信息
	 */
	public PlayList searchPlayListByName(String playListName) {
		PlayList playList = null;
		Set<String> set = playListMap.keySet();
		for (String string : set) {
			if (string.equals(playListName)) {
				playList = playListMap.get(string);
			}
		}
		return playList;
	}

	/**
	 * 显示所有播放列表名称
	 */
	public void displayPlayListName() {
		Set<String> set = playListMap.keySet();
		System.out.println("播放列表名称是:");
		for (String string : set) {
			System.out.println(string);
		}
	}

	public Map<String, PlayList> getPlayListMap() {
		return playListMap;
	}

	public void setPlayListMap(Map<String, PlayList> playListMap) {
		this.playListMap = playListMap;
	}

}

④Test类:

package com.player;

import java.util.Scanner;

public class Test {

	// 测试歌曲类:Song
//	public void songTest() {
//		Song song1 = new Song("001", "重返荣耀", "南拳妈妈");
//		Song song2 = new Song("002", "水手怕水", "周杰伦");
//		Song song3 = new Song("003", "骑士精神", "蔡依林");
//		Song song4 = new Song("004", "河滨公园", "S.H.E");
//		Song song5 = new Song("002", "水手怕水", "周杰伦");
//		System.out.println(song1);
//		System.out.println("song1==song3?" + (song1.equals(song3)));
//		System.out.println("song2==song5?" + (song2.equals(song5)));
//		System.out.println(song3 == song4);
//	}

	// 测试播放列表类:PlayList
//	public void PlayListTest() {
//		Song song1 = new Song("001", "重返荣耀", "南拳妈妈");
//		Song song2 = new Song("002", "水手怕水", "周杰伦");
//		Song song3 = new Song("003", "骑士精神", "蔡依林");
//		Song song4 = new Song("004", "河滨公园", "S.H.E");
//		Song song5 = new Song("002", "水手怕水", "周杰伦");
//		PlayList mainPlayList = new PlayList("主播放列表");
//		mainPlayList.addToPlayList(song1);
//		mainPlayList.addToPlayList(song2);
//		mainPlayList.addToPlayList(song3);
//		mainPlayList.addToPlayList(song5);
//		mainPlayList.displayAllSong();
//		// 通过歌曲id查询播放列表中的歌曲
//		Song song = mainPlayList.searchSongById("002");
//		// 通过名称查询歌曲
//		song = null;
//		song = mainPlayList.searchSongByName("河滨公园");
//		// 修改歌曲
//		Song song6 = new Song("004", "如果当时", "许嵩");
//		mainPlayList.updateSong("003", song6);
//		mainPlayList.displayAllSong();
//		// 删除歌曲信息
//		mainPlayList.deleteSong("005");
//		mainPlayList.deleteSong("001");
//		mainPlayList.displayAllSong();
//	}

	// 测试播放列表集合类
//	public void PlayListCollectionTest() {
//		Song song1 = new Song("001", "重返荣耀", "南拳妈妈");
//		Song song2 = new Song("002", "水手怕水", "周杰伦");
//		Song song3 = new Song("003", "骑士精神", "蔡依林");
//		// 创建主播放列表
//		PlayList mainPlayList = new PlayList("主播放列表");
//		// 添加歌曲到主播放列表
//		mainPlayList.addToPlayList(song1);
//		mainPlayList.addToPlayList(song2);
//		mainPlayList.addToPlayList(song3);
//		// 定义一个新播放列表并从主播放列表添加歌曲过去
//		PlayList likePlayList = new PlayList("我喜欢");
//		likePlayList.addToPlayList(mainPlayList.getMusicList().get(0));
//		likePlayList.addToPlayList(mainPlayList.getMusicList().get(1));
//		likePlayList.displayAllSong();
//		// 将2个播放列表添加到集合中
//		PlayListCollection playListCollection = new PlayListCollection();
//		playListCollection.addPlayList(mainPlayList);
//		playListCollection.addPlayList(likePlayList);
//		playListCollection.displayPlayListName();
//		// 根据播放列表名称查询播放列表信息,并显示
//		PlayList playList = playListCollection.searchPlayListByName("我喜欢");
//		playList.displayAllSong();
//		// 删除播放列表
//		System.out.println("删除前:");
//		playListCollection.displayPlayListName();
//		playListCollection.deletePlayList(likePlayList);
//		System.out.println("删除后:");
//		playListCollection.displayPlayListName();
//	}

	// 主菜单
	private void mainMenu() {
		System.out.println("*****************************");
		System.out.println("         ***主菜单***          ");
		System.out.println("        1——播放列表管理                         ");
		System.out.println("        2——播放器管理                             ");
		System.out.println("        0——退出                                        ");
		System.out.println("*****************************");
	}

	// 播放列表管理菜单
	public void playListMenu() {
		System.out.println("*******************************");
		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("*******************************");
	}

	// 播放器菜单
	public void playerMenu() {
		System.out.println("*******************************");
		System.out.println("     ***播放器管理***             ");
		System.out.println("     1——向播放器添加播放列表                       ");
		System.out.println("     2——从播放器删除播放列表                       ");
		System.out.println("     3——通过名字查询播放列表信息               ");
		System.out.println("     4——显示所有播放列表名称                       ");
		System.out.println("     5——返回上一级菜单                                  ");
		System.out.println("*******************************");
	}

	// 主流程
	public void test() {
		Scanner scanner = new Scanner(System.in);
		int input1 = 0, input2 = 0, input3 = 0;
		Test test = new Test();
		// 创建一个播放列表容器
		PlayListCollection playListCollection = new PlayListCollection();
		// 创建主播放列表
		PlayList mainPlayList = new PlayList("主播放列表");
		// 将主播放列表添加到播放器
		playListCollection.addPlayList(mainPlayList);
		PlayList nomalPlayList = null;
		while (true) {
			test.mainMenu();
			System.out.println("请输入对应数字进行操作:");
			input1 = scanner.nextInt();
			if (input1 == 0) {
				break;
			}
			switch (input1) {
			case 1:
				// 播放列表管理
				while (true) {
					test.playListMenu();
					System.out.println("请输入对应数字进行操作:");
					input2 = scanner.nextInt();
					if (input2 == 8) {
						break;
					}
					switch (input2) {

					case 1:
						System.out.println("将歌曲添加到主播放列表 ");
						System.out.println("请输入要添加的歌曲数量:");
						int count = scanner.nextInt();
						for (int i = 1; i <= count; i++) {
							System.out.println("请输入第" + i + "首歌曲的信息:");
							System.out.println("请输入歌曲id:");
							String idString = scanner.next();
							System.out.println("请输入歌曲名称:");
							String nameString = scanner.next();
							System.out.println("请输入歌手:");
							String singerString = scanner.next();
							// 创建歌曲类对象
							Song song = new Song(idString, nameString, singerString);
							mainPlayList.addToPlayList(song);
//							mainPlayList.displayAllSong();  //测试
						}
						break;

					case 2:
						System.out.println("将歌曲添加到普通播放列表 ");
						System.out.println("请输入要添加的播放列表名称:");
						String plName = scanner.next();
						// 根据名称判断播放列表是否存在于播放器中
						nomalPlayList = playListCollection.searchPlayListByName(plName);
						if (nomalPlayList == null) {
							System.out.println("该播放列表不存在,请先将播放列表添加到播放器中!");
						} else {
							System.out.println("请输入要添加的歌曲数量:");
							int count1 = scanner.nextInt();
							for (int i = 1; i <= count1; i++) {
								System.out.println("请输入第" + i + "首歌曲的信息:");
								System.out.println("请输入歌曲id:");
								String idString = scanner.next();
								// 判断该id的歌曲是否在主播放列表中存在
								Song song = mainPlayList.searchSongById(idString);
								// 若不存在,则创建新的添加,继续输入歌曲的其他信息
								if (song == null) {
									System.out.println("该歌曲在主播放列表中不存在,请继续输入歌曲的其他信息!");
									System.out.println("请输入歌曲名称:");
									String nameString = scanner.next();
									System.out.println("请输入歌手:");
									String singerString = scanner.next();
									// 创建歌曲类对象
									song = new Song(idString, nameString, singerString);
									// 分别将歌曲添加到普通播放列表和主播放列表
									nomalPlayList.addToPlayList(song);
									mainPlayList.addToPlayList(song);
								} else {
									// 若歌曲存在于主播放列表中,则直接添加到普通播放列表
									nomalPlayList.addToPlayList(song);
								}
							}
							// 显示播放列表中的歌曲信息
							System.out.println("主播放列表:");
							nomalPlayList.displayAllSong();
							System.out.println("普通播放列表:");
							mainPlayList.displayAllSong();
						}
						break;

					case 3:
						System.out.println("通过歌曲id查询播放列表中的歌曲");
						System.out.println("请输入要查询的播放列表名称:");
						String playListName = scanner.next();
						// 查询该播放列表是否存在
						PlayList playList = playListCollection.searchPlayListByName(playListName);
						if (playList == null) {
							System.out.println("该播放列表不存在!");
							break;
						} else {
							System.out.println("请输入要查询的歌曲id:");
							String idString = scanner.next();
							Song song = playList.searchSongById(idString);
							if (song == null) {
								System.out.println("该歌曲在" + playListName + "中不存在!");
							} else {
								System.out.println("该歌曲的信息是:");
								System.out.println(song);
							}
						}
						break;

					case 4:
						System.out.println("通过歌曲名称查询播放列表中的歌曲");
						System.out.println("请输入要查询的播放列表名称:");
						String playListNamea = scanner.next();
						// 查询该播放列表是否存在
						PlayList playLista = playListCollection.searchPlayListByName(playListNamea);
						if (playLista == null) {
							System.out.println("该播放列表不存在!");
							break;
						} else {
							System.out.println("请输入要查询的歌曲名称:");
							String nameString = scanner.next();
							Song song = playLista.searchSongByName(nameString);
							if (song == null) {
								System.out.println("该歌曲在" + playListNamea + "中不存在!");
							} else {
								System.out.println("该歌曲的信息是:");
								System.out.println(song);
							}
						}
						break;
					case 5:
						System.out.println("修改播放列表中的歌曲  ");
						System.out.println("请输入要查询的播放列表名称:");
						String playListNameb = scanner.next();
						// 查询该播放列表是否存在
						PlayList playListb = playListCollection.searchPlayListByName(playListNameb);
						if (playListb == null) {
							System.out.println("该播放列表不存在!");
							break;
						} else {
							System.out.println("请输入要修改的歌曲id:");
							String idString = scanner.next();
							if (playListb.searchSongById(idString) == null) {
								System.out.println("播放列表" + playListNameb + "中不存在id为" + idString + "的歌曲,请先添加该歌曲再修改!");
								break;
							} else {
								System.out.println("请输入修改后的歌曲名称:");
								String nameString = scanner.next();
								System.out.println("请输入修改后的歌手:");
								String singerString = scanner.next();
								Song songb = new Song(idString, nameString, singerString);
								playListb.updateSong(idString, songb);
							}
						}
						break;
					case 6:
						System.out.println("删除播放列表中的歌曲     ");
						System.out.println("请输入要查询的播放列表名称:");
						String playListNamec = scanner.next();
						// 查询该播放列表是否存在
						PlayList playListc = playListCollection.searchPlayListByName(playListNamec);
						if (playListc == null) {
							System.out.println("该播放列表不存在!");
							break;
						} else {
							System.out.println("请输入要修改的歌曲id:");
							String idString = scanner.next();
							if (playListc.searchSongById(idString) == null) {
								System.out.println("播放列表" + playListNamec + "中不存在id为" + idString + "的歌曲!");
								break;
							} else {
								playListc.deleteSong(idString);
							}
						}
						break;
					case 7:
						System.out.println("显示播放列表中所有的歌曲 ");
						System.out.println("请输入要查询的播放列表名称:");
						String playListNamed = scanner.next();
						// 查询该播放列表是否存在
						PlayList playListd = playListCollection.searchPlayListByName(playListNamed);
						if (playListd == null) {
							System.out.println("该播放列表不存在!");
							break;
						} else {
							playListd.displayAllSong();
						}
						break;
					default:
						System.out.println("该数字没有对应操作!");
						break;
					}
				}
				break;

			case 2:
				// 播放器管理
				while (true) {
					test.playerMenu();
					System.out.println("请输入对应数字进行操作:");
					input3 = scanner.nextInt();
					if (input3 == 5) {
						break;
					}
					switch (input3) {
					case 1:
						System.out.println("向播放器添加播放列表");
						System.out.println("输入要添加到播放列表称:");
						String playListName = scanner.next();
						// 创建一个新的播放列表对象
						nomalPlayList = new PlayList(playListName);
						// 将播放列表添加到播放器中
						playListCollection.addPlayList(nomalPlayList);
						break;
					case 2:
						System.out.println("从播放器删除播放列表");
						System.out.println("请输入要删除的播放列表名称:");
						String palyListName2 = scanner.next();
						if (palyListName2.equals("主播放列表")) {
							System.out.println("主播放列表不能删除!");
							break;
						}
						// 查询该播放列表是否存在
						PlayList playList2 = playListCollection.searchPlayListByName(palyListName2);
						if (playList2 == null) {
							System.out.println("该播放列表不存在!");
						} else {
							playListCollection.deletePlayList(playList2);
						}
						break;
					case 3:
						System.out.println("通过名字查询播放列表信息");
						System.out.println("请输入要查询的播放列表名称:");
						String palyListName1 = scanner.next();
						PlayList playList1 = playListCollection.searchPlayListByName(palyListName1);
						if (playList1 == null) {
							System.out.println("该播放列表不存在!");
						} else {
							// 显示该播放列表中名称及其歌曲
							System.out.println("该播放列表存在!");
							playList1.displayAllSong();
						}
						break;
					case 4:
						System.out.println("显示所有播放列表名称  ");
						playListCollection.displayPlayListName();
						break;
					default:
						System.out.println("该数字没有对应操作!");
						break;
					}
				}
				break;

			default:
				System.out.println("该数字没有对应操作!");
				break;
			}

		}
	}

	public static void main(String[] args) {
		Test test = new Test();
//		test.songTest();
//		test.PlayListTest();
		test.test();

	}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值