Java 之 集合综合案例——播放器管理

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
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值