老师帮忙看下代码有什么问题,还有播放列表我使用了Set集合,Set和List集合有什么区别?

来源:4-7 自由编程

qq_酒半熏_0

2020-02-15 11:00:06

package com.jiubx.player;
import java.io.Serializable;
//歌曲类
public class Song implements Serializable{
 private String id;//id
 private String name;//歌曲名称
 private String singer;//演唱者
 public Song(String id,String name,String singer) {
  this.setId(id);
  this.setName(name);
  this.setSinger(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;
 }
 //重写hashCode()方法,不改变格式
 @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;
 }
 //重写equals()方法,比较两对象的属性是否全部相等
 @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 (song.getId()==id)&&(song.getName()==name)&&(song.getSinger()==singer);
  }
  return false;
 }
 @Override
 public String toString() {
  return "歌曲id:" + id + ", 歌曲名称:" + name + ", 演唱者:" + singer ;
 }
 
}
package com.jiubx.player;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
//播放列表类
public class PlayList implements Serializable{
 private String playListName;//播放列表名称
 private Set<Song> songSet=null;//存放song对象的set集合
 Iterator<Song> it;//在迭代器中存放songSet集合中所有元素
 public PlayList(String playListName) {
  this.setPlayListName(playListName);
  songSet=new HashSet<Song>();//实例化set接口的实现类的对象
 }
 public String getPlayListName() {
  return playListName;
 }
 public void setPlayListName(String playListName) {
  this.playListName = playListName;
 }
 //向播放列表中添加song对象
 public void addToPlayList(Song song) {
  boolean flag=false;//判断该歌曲是否在播放列表中存在
  for(Song s:songSet) {
   //System.out.println(s.equals(song));
   if(s.equals(song)) {
    flag=true;
    System.out.println("该歌曲在播放列表中已存在,添加歌曲失败!");
   }
  }
  if(!flag) {
   songSet.add(song);
   System.out.println("向播放列表中添加歌曲"+song.getId()+"成功!");
  }
 }
 //删除播放列表中的歌曲
 public void deleteSongInPlayList(String id) {
  boolean flag=false;//判断播放列表中是否有此歌曲
  //如果播放列表中没有song对象(歌曲)则结束方法
  if(songSet.isEmpty()) {
   System.out.println("播放列表为空,无法删除歌曲!");
   return;
  }
  //使用增强型for循环遍历set集合,将集合中的元素与id进行比较
  for(Song song:songSet) {
   if(song.getId().equals(id)) {
    songSet.remove(song);
    System.out.println("删除歌曲id\""+id+"\"成功");
    flag=true;
    break;    //不用break避免可能有重复id,但会出现并发异常,用break只会删除重复id歌曲中先查询到的第一首歌曲
   }
  }
  if(!flag) {
   System.out.println("播放列表中没有此歌曲id,删除歌曲id\""+id+"\"失败!");
  }
 }
 //修改播放列表中的歌曲
 public void updateSongInPlayList(String id,Song song) {
  boolean flag=false;//判断播放列表中是否有此歌曲
  //如果播放列表中没有song对象(歌曲)则结束方法
  if(songSet.isEmpty()) {
   System.out.println("播放列表为空,无法修改歌曲!");
   return;
  }
  //使用增强型for循环遍历set集合,将集合中的元素与id进行比较
  for(Song song1:songSet) {
   if(song1.getId().equals(id)) {
    Scanner sc=new Scanner(System.in);
    songSet.remove(song1);//删除要修改的歌曲
    addToPlayList(song);
    System.out.println("修改歌曲id\""+id+"\"成功");
    flag=true;
    break;   //不用break避免可能有重复id,不用会出现并发异常,用break只会修改重复id歌曲中先搜索到的歌曲
   }
  }
  if(!flag) {
   System.out.println("播放列表中没有此歌曲id,修改歌曲id\""+id+"\"失败!");
  }
 }
 //通过歌曲id查询播放列表中的歌曲
 public void searchSongInPlayListById(String id) {
  boolean flag=false;//判断播放列表中是否有此歌曲
  //如果播放列表中没有song对象(歌曲)则结束方法
  if(songSet.isEmpty()) {
   System.out.println("播放列表为空,无法查询歌曲!");
   return;
  }
  //使用增强型for循环遍历set集合,将集合中的元素与id进行比较
  for(Song song:songSet) {
   if(song.getId().equals(id)) {
    System.out.println("查询歌曲id\""+id+"\"成功,歌曲的信息是:");
    System.out.println(song);
    flag=true;
    //break;    //不用break避免可能有重复id
   }
  }
  if(!flag) {
   System.out.println("播放列表中没有此歌曲id,查询歌曲id\""+id+"\"失败!");
  }
 }
 //通过歌曲名称查询播放列表中的歌曲
 public void searchSongInPlayListByName(String name) {
  boolean flag=false;//判断播放列表中是否有此歌曲
  //如果播放列表中没有song对象(歌曲)则结束方法
  if(songSet.isEmpty()) {
   System.out.println("播放列表为空,无法查询歌曲!");
   return;
  }
  //使用增强型for循环遍历set集合,将集合中的元素与id进行比较
  for(Song song:songSet) {
   if(song.getName().equals(name)) {
    System.out.println("查询歌曲名称\""+name+"\"成功,歌曲的信息是:");
    System.out.println(song);
    flag=true;
    //break; //不用break避免可能有重复name
   }
  }
  if(!flag) {
   System.out.println("播放列表中没有此歌曲名称,查询歌曲名称\""+name+"\"失败!");
  }
 }
 //显示播放列表中所有歌曲
 public void showAllSong() {
  if(songSet.isEmpty()) {
   System.out.println("播放列表为空!");
  }
  for(Song song:songSet) {
   System.out.println(song);
  }
 }
 public Set<Song> getSongSet() {
  return songSet;
 }
 public void setSongSet(Set<Song> songSet) {
  this.songSet = songSet;
 }
 
}



package com.jiubx.player;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
//播放器类
public class PlayListCollection {
 private Map<String,PlayList> playlistMap;
 Set<String> keySet;
 public PlayListCollection() {
  playlistMap=new HashMap<String,PlayList>();
 }
 //向播放器中添加播放列表
 public void addPlayListToMap(PlayList playlist) {
  playlistMap.put(playlist.getPlayListName(), playlist);
 }
 //从播放器删除播放列表
 public void deletePlayListInMap(PlayList playlist) {
  boolean flag=false;//判断播放器中是否有此播放列表
  keySet=playlistMap.keySet();
  //增强型for遍历Set集合中元素,并将之与要删除的播放列表对比
  for(String s:keySet) {
   if(s.equals(playlist.getPlayListName())) {
    playlistMap.remove(s);
    System.out.println("删除播放列表\""+s+"\"成功!");
    flag=true;
    break;
   }
  }
  if(!flag) {
   System.out.println("播放器中没有播放列表"+playlist.getPlayListName());
  }
 }
 //通过名字查询播放列表信息
 public PlayList searchPlayListInMapByName(String playListName) {
  keySet=playlistMap.keySet();
  //增强型for遍历Set集合中元素,并将之与要查询的播放列表对比
  for(String s:keySet) {
   if(s.equals(playListName)) {
    //playlistMap.get(s).showAllSong();
    return playlistMap.get(s);
   }
  }
  return null;
 }
 //显示所有播放列表名称
 public void showPlayListNameInMap() {
  Set<Entry<String,PlayList>> set=playlistMap.entrySet();
  for(Entry<String,PlayList> entry:set) {
   System.out.println(entry.getKey());
  }
 }
 public Map<String, PlayList> getPlaylistMap() {
  return playlistMap;
 }
 public void setPlaylistMap(Map<String, PlayList> playlistMap) {
  this.playlistMap = playlistMap;
 }
 
}

package com.jiubx.player;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.InputMismatchException;
import java.util.Iterator;
import java.util.List;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
//播放器测试类
public class PlayerTest {
 // 测试Song类
 public void songTest() {
  Song song1 = new Song("s001", "左手指月", "萨顶顶");
  Song song2 = new Song("s002", "阿刁", "赵雷");
  Song song3 = new Song("s003", "黑暗骑士", "林俊杰");
  Song song4 = new Song("s003", "黑暗骑士", "林俊杰");
  Set<Song> ss = new HashSet<>();
  ss.add(song1);
  ss.add(song2);
  ss.add(song3);
  for (Song s : ss) {
   System.out.println(s.equals(song4));
  }
 }
 // 测试PlayList类
 public void playListTest() {
  Song song1 = new Song("s001", "左手指月", "萨顶顶");
  Song song2 = new Song("s002", "阿刁", "赵雷");
  Song song3 = new Song("s003", "黑暗骑士", "林俊杰");
  Song song4 = new Song("s003", "黑暗骑士", "林俊杰");
  PlayList playlist = new PlayList("主播放列表");
  playlist.addToPlayList(song1);
  playlist.addToPlayList(song2);
  playlist.addToPlayList(song3);
  playlist.addToPlayList(song4);
  System.out.println("删除前播放列表中的歌曲:");
  playlist.showAllSong();
  playlist.deleteSongInPlayList("s001");
  System.out.println("删除后播放列表中的歌曲:");
  playlist.showAllSong();
  System.out.println("通过id查询歌曲:");
  playlist.searchSongInPlayListById("s003");
  playlist.searchSongInPlayListById("s004");
  playlist.searchSongInPlayListByName("阿刁");
 }
 // 测试PlayListCollection类
 public void playListCollectionTest() {
  PlayList mainPlayList = new PlayList("主播放列表");
  mainPlayList.addToPlayList(new Song("s001", "左手指月", "萨顶顶"));
  mainPlayList.showAllSong();
  PlayListCollection plc = new PlayListCollection();
  plc.addPlayListToMap(mainPlayList);
  plc.showPlayListNameInMap();
  plc.searchPlayListInMapByName("主播放列表");
 }
 // 主菜单
 public 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("           9--返回上一级菜单     ");
  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("           9--返回上一级菜单             ");
  System.out.println("*********************************************");
 }
 public static void main(String[] args) {
  PlayerTest pt = new PlayerTest();
  Scanner sc = new Scanner(System.in);
  int input1, input2, input3;
  PlayList mainPlaylist = new PlayList("主播放列表");// 实例化主播放列表
  PlayListCollection plc = new PlayListCollection();// 实例化播放器
  plc.addPlayListToMap(mainPlaylist); // 默认将主播放列表添加到播放器中
  PlayList favouritePlayList;// 声明普通播放列表的引用变量
  boolean flag;// 判断播放器中是否存在此播放列表标志
  String playlistName;// 播放列表名称
  Set<String> keySet;// 将播放器中的所有播放列表名存入Set集合
   pt.songTest();
  // pt.playListTest();
  // pt.playListCollectionTest();
  while (true) {
   pt.mainMenu(); // 显示主菜单
   boolean playlistFlag = true;// 播放列表管理循环控制标志
   boolean playerFlag = true;// 播放器管理循环控制标志
   try {
    System.out.println("请输入需要进行的操作所对应的数字:");
    input1 = sc.nextInt();
   } catch (InputMismatchException e) {
    sc.next(); // 将输入错误的数据读取出来
    System.out.println("输入的数据格式有误!请输入数字。");
    continue;
   }
   switch (input1) {
   case 1:// 显示播放列表菜单
    while (playlistFlag) {
     pt.playlistMenu();
     while (true) {
      try {
       System.out.println("请输入需要进行的操作所对应的数字:");
       input2 = sc.nextInt();
       break;
      } catch (InputMismatchException e) {
       sc.next(); // 将输入错误的数据读取出来
       System.out.println("输入的数据格式有误!请输入数字。");
       continue;
      }
     }
     switch (input2) {
     case 1: // 将歌曲添加到主播放列表
      System.out.println("请输入添加的歌曲数目:");
      int count;
      while (true) {
       try {
        count = sc.nextInt();
        if (count < 1) {
         System.out.println("添加歌曲的数目无意义!");
         break;
        }
        break;
       } catch (InputMismatchException e) {
        sc.next(); // 将输入错误的数据读取出来
        System.out.println("输入的数据格式有误!请输入数字。");
        continue;
       }
      }
      for (int n = 1; n <= count; n++) {
       System.out.println("请输入第" + n + "首歌曲的id:");
       String strId = sc.next();
       boolean idFlag = false;// 判断主播放列表是否存在相同id
       for (Song song1 : mainPlaylist.getSongSet()) {
        if (song1.getId().equals(strId)) {
         idFlag = true;
         break;
        }
       }
       if (idFlag) {
        System.out.println("该歌曲id在主播放列表中已存在,请输入其他歌曲id!");
        n--;
        continue;
       }
       System.out.println("请输入第" + n + "首歌曲的名称:");
       String strName = sc.next();
       System.out.println("请输入第" + n + "首歌曲的演唱者:");
       String strSinger = sc.next();
       Song song = new Song(strId, strName, strSinger);
       mainPlaylist.addToPlayList(song);// 向主菜单中添加歌曲
      }
      break;
     case 2:// 将歌曲添加到普通播放列表
      flag = false;// 判断播放器中是否存在此播放列表标志
      System.out.println("请输入要添加歌曲的普通播放列表名称:");
      playlistName = sc.next();
      if (playlistName.equals(mainPlaylist.getPlayListName())) {
       System.out.println("添加失败,请输入要添加歌曲的普通播放列表名称,不能输入主播放列表名称!");
       break;
      }
      keySet = plc.getPlaylistMap().keySet();// 将播放器中的所有播放列表名存入Set集合
      for (String s : keySet) { // 遍历Set集合
       if (s.equals(playlistName)) { // 判断播放器中是否存在此播放列表
        flag = true;
        System.out.println("请输入添加的歌曲数目:");
        int count2;
        while (true) {
         try {
          count2 = sc.nextInt();
          if (count2 < 1) {
           System.out.println("添加歌曲的数目无意义!");
           break;
          }
          break;
         } catch (InputMismatchException e) {
          sc.next(); // 将输入错误的数据读取出来
          System.out.println("输入的数据格式有误!请输入数字。");
          continue;
         }
        }
        for (int n = 1; n <= count2; n++) {
         System.out.println("请输入第" + n + "首歌曲的id:");
         String strId = sc.next();
         boolean idFlag = false;// 判断主播放列表是否存在相同id
         for (Song song1 : mainPlaylist.getSongSet()) {
          if (song1.getId().equals(strId)) {
           idFlag = true;
           break;
          }
         }
         if (idFlag) {
          System.out.println("该歌曲id在主播放列表中已存在,请输入其他歌曲id!");
          n--;
          continue;
         }
         System.out.println("请输入第" + n + "首歌曲的名称:");
         String strName = sc.next();
         System.out.println("请输入第" + n + "首歌曲的演唱者:");
         String strSinger = sc.next();
         Song song = new Song(strId, strName, strSinger);
         // 将要添加的歌曲与主播放列表中歌曲比较
         boolean flag2 = false;// 将要添加的歌曲与主播放列表中歌曲比较的标志
         for (Song song1 : mainPlaylist.getSongSet()) {
          if (song1.equals(song)) {
           plc.getPlaylistMap().get(s).addToPlayList(song1);// 若存在主播放列表中,直接使用
           flag2 = true;
           break;
          }
         }
         if (!flag2) { // 若不存在主播放列表中,则在主播放列表和此普通播放列表都添加此歌曲
          mainPlaylist.addToPlayList(song);
          plc.getPlaylistMap().get(s).addToPlayList(song);
         }
        }
        break;
       }
      }
      if (!flag) {
       System.out.println("播放器中不存在此播放列表,添加歌曲失败!");
      }
      break;
     case 3:// 通过歌曲id查询播放列表中的歌曲
      flag = false;// 判断播放器中是否存在此播放列表标志
      System.out.println("请输入要查询的歌曲id的所在的播放列表名称:");
      playlistName = sc.next();
      keySet = plc.getPlaylistMap().keySet();// 将播放器中的所有播放列表名存入Set集合
      for (String s : keySet) { // 遍历Set集合
       if (s.equals(playlistName)) { // 判断播放器中是否存在此播放列表
        flag = true;
        System.out.println("此播放列表存在,请输入要查询的歌曲id:");
        String strId = sc.next();
        plc.getPlaylistMap().get(s).searchSongInPlayListById(strId);
        break;
       }
      }
      if (!flag) {
       System.out.println("播放器中不存在此播放列表,根据歌曲id查询歌曲失败!");
      }
      break;
     case 4:// 通过歌曲名称查询播放列表中的歌曲
      flag = false;// 判断播放器中是否存在此播放列表标志
      System.out.println("请输入要查询的歌曲名称的所在的播放列表名称:");
      playlistName = sc.next();
      keySet = plc.getPlaylistMap().keySet();// 将播放器中的所有播放列表名存入Set集合
      for (String s : keySet) { // 遍历Set集合
       if (s.equals(playlistName)) { // 判断播放器中是否存在此播放列表
        flag = true;
        System.out.println("此播放列表存在,请输入要查询的歌曲名称:");
        String strName = sc.next();
        plc.getPlaylistMap().get(s).searchSongInPlayListByName(strName);
        break;
       }
      }
      if (!flag) {
       System.out.println("播放器中不存在此播放列表,根据歌曲名称查询歌曲失败!");
      }
      break;
     case 5:// 修改播放列表中的歌曲
      flag = false;// 判断播放器中是否存在此播放列表标志
      System.out.println("请输入要修改歌曲的播放列表名称:");
      playlistName = sc.next();
      keySet = plc.getPlaylistMap().keySet();// 将播放器中的所有播放列表名存入Set集合
      for (String s : keySet) { // 遍历Set集合
       if (s.equals(playlistName)) { // 判断播放器中是否存在此播放列表
        flag = true;
        System.out.println("此播放列表存在,请输入要修改的歌曲id:");
        String songId = sc.next();
        System.out.println("请输入修改歌曲的名称:");
        String strName = sc.next();
        System.out.println("请输入修改歌曲的演唱者:");
        String strSinger = sc.next();
        Song song = new Song(songId, strName, strSinger);
        mainPlaylist.updateSongInPlayList(songId, song);// 同时修改主播放列表中此歌曲
        plc.getPlaylistMap().get(s).updateSongInPlayList(songId, song);
        break;
       }
      }
      if (!flag) {
       System.out.println("播放器中不存在此播放列表,修改播放列表中的歌曲失败!");
      }
      break;
     case 6:// 删除播放列表中的歌曲
      flag = false;// 判断播放器中是否存在此播放列表标志
      System.out.println("请输入要删除歌曲的播放列表名称:");
      playlistName = sc.next();
      keySet = plc.getPlaylistMap().keySet();// 将播放器中的所有播放列表名存入Set集合
      for (String s : keySet) { // 遍历Set集合
       if (s.equals(playlistName)) { // 判断播放器中是否存在此播放列表
        flag = true;
        System.out.println("此播放列表存在,请输入要删除的歌曲id:");
        String strId = sc.next();
        keySet = plc.getPlaylistMap().keySet();
        for (String pl : keySet) {
         plc.getPlaylistMap().get(pl).deleteSongInPlayList(strId);// 删除所有播放列表中的此歌曲
        }
        break;
       }
      }
      if (!flag) {
       System.out.println("播放器中不存在此播放列表,删除播放列表中的歌曲失败!");
      }
      break;
     case 7:// 显示播放列表中的所有歌曲
      System.out.println("请输入要显示歌曲的播放列表名称:");
      playlistName = sc.next();
      if (plc.searchPlayListInMapByName(playlistName) != null) {
       System.out.println("查询播放列表\"" + playlistName + "\"成功!播放列表的信息是:");
       plc.getPlaylistMap().get(playlistName).showAllSong();
      } else {
       System.out.println("该播放列表不存在!");
      }
//     Set<Entry<String, PlayList>> entrySet = plc.getPlaylistMap().entrySet();
//     System.out.println("显示播放器中所有播放列表的信息:");
//     for (Entry<String, PlayList> eSet : entrySet) {
//      System.out.println(eSet.getKey() + ":");
//      eSet.getValue().showAllSong();
//     }
      break;
     case 8:// 导出歌单
      flag = false;// 判断播放器中是否存在此播放列表标志
      System.out.println("请输入要导出的歌单的播放列表名称:");
      playlistName = sc.next();
      keySet = plc.getPlaylistMap().keySet();// 将播放器中的所有播放列表名存入Set集合
      for (String s : keySet) { // 遍历Set集合
       if (s.equals(playlistName)) { // 判断播放器中是否存在此播放列表
        flag = true;
        try {
         FileOutputStream fos = new FileOutputStream(playlistName + ".txt");
         ObjectOutputStream oos = new ObjectOutputStream(fos);
         oos.writeObject(plc.getPlaylistMap().get(playlistName));// 歌单名称将歌单信息导出为“名称.txt”文件到项目的根目录下
         FileInputStream fis = new FileInputStream(playlistName + ".txt");
         ObjectInputStream ois = new ObjectInputStream(fis);
         try {
          ((PlayList) ois.readObject()).showAllSong();// 对象反序列化,同时显示歌曲信息。
         } catch (ClassNotFoundException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
         }
         ois.close();
         fis.close();
         oos.flush();
         fos.close();
         oos.close();
        } catch (FileNotFoundException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
        } catch (IOException e) {
         e.printStackTrace();
        }
        break;
       }
      }
      if (!flag) {
       System.out.println("播放器中不存在此播放列表,导出歌单失败!");
      }
      break;
     case 9:// 返回上一级菜单
      playlistFlag = false;
      break;
     default:
      System.out.println("输入数字有误,请重新输入!");
      break;
     }
    }
    break;
   case 2:// 显示播放器菜单
    while (playerFlag) {
     pt.playerMenu();
     while (true) {
      try {
       System.out.println("请输入需要进行的操作所对应的数字:");
       input3 = sc.nextInt();
       break;
      } catch (InputMismatchException e) {
       sc.next(); // 将输入错误的数据读取出来
       System.out.println("输入的数据格式有误!请输入数字。");
       continue;
      }
     }
     switch (input3) {
     case 1:// 向播放器添加播放列表
      System.out.println("请输入要添加的播放列表名称:");
      playlistName = sc.next();
      favouritePlayList = new PlayList(playlistName);
      plc.addPlayListToMap(favouritePlayList);// 向播放器中添加播放列表
      break;
     case 2:// 从播放器删除播放列表
      System.out.println("请输入要删除的播放列表名称:");
      playlistName = sc.next();
      if (playlistName.equals(mainPlaylist.getPlayListName())) {
       System.out.println("主播放列表不能删除!");
       break; // 不能删除主播放列表,结束case语句
      }
      if (plc.searchPlayListInMapByName(playlistName) != null) {
       plc.deletePlayListInMap(plc.getPlaylistMap().get(playlistName));
      } else {
       System.out.println("该播放列表不存在!");
      }
      break;
     case 3:// 通过名字查询播放列表信息
      System.out.println("请输入要通过名字查询的播放列表名称:");
      playlistName = sc.next();
      if (plc.searchPlayListInMapByName(playlistName) != null) {
       System.out.println("查询播放列表\"" + playlistName + "\"成功!播放列表的信息是:");
       plc.getPlaylistMap().get(playlistName).showAllSong();
      } else {
       System.out.println("该播放列表不存在!");
      }
      break;
     case 4:// 显示所有播放列表名称
      keySet = plc.getPlaylistMap().keySet();
      System.out.println("播放器中所有播放列表的名称:");
      for (String s : keySet) {
       System.out.println(s);
      }
      break;
     case 9:// 返回上一级菜单
      playerFlag = false;
      break;
     default:
      System.out.println("输入数字有误,请重新输入!");
      break;
     }
    }
    break;
   case 0:// 退出
    return;// 结束程序
   }
  }
 }
}
写回答

1回答

好帮手慕小脸

2020-02-15

同学你好,测试代码是正确的的。但还有一个小建议如下:

 1、主菜单

   1) 输入不存在的数字,判断是否提示没有对应的操作,如果没有,增加default用来输出提示,如:

        http://img.mukewang.com/climg/5e4784590917c62105110182.jpg   

http://img.mukewang.com/climg/5e4784c909e2512206980131.jpg

2、Set和List集合有什么区别?

    1)List是元素有序并且可以重复的集合,List可以精确的控制每个元素的插入位置,或删除某个位置的元素

    2)Set是元素无序并且不可以重复的集合

对此更详细的区别同学可参考教辅《集合》

http://file.mukewang.com/class/assist/35/217186/%E9%9B%86%E5%90%88.pdf

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~


0
hq_酒半熏_0
h 谢谢老师的回复,老师能不能帮我看下上个问题的疑问https://class.imooc.com/course/qadetail/192335
h020-02-15
共1条回复

0 学习 · 11489 问题

查看课程