使用字段字符串检查对象是否存在

时间:2016-07-24 08:28:34

标签: java

我有一个Song类(字段:字符串名称)和一个Album类(用Song对象初始化一个Arraylist填充),我正在添加一个方法(addSongAlbum(String name parameter)),首先检查歌曲是否已经在专辑。一切正常,但现在我想检查一下这首歌是否存在于专辑之外。考虑到方法的输入是字符串,我该怎么做呢?

public void addSongToAlbum(String name){
    if(checkExist(name) == null){
        album.add(checkExist(name));
        System.out.println("Song "+name+" was successfully added");
    } else {
        System.out.println("This song is already in the album");
    }
}

private Song checkExist(String name){
    for(int i=0; i<album.size(); i++){
        if(name.equals(album.get(i).getName())){
            return album.get(i);
        }
    }
    return null;
}

2 个答案:

答案 0 :(得分:0)

您需要在某处拥有ListSong个对象。在构造时将它们添加到静态List(当你不再使用它们来释放内存时,你需要记住删除它们),或者具有类似List的所有Album Song对象,然后搜索那些。如果您要检查已创建的所有 {{1}}个对象,则第一个非常有用,如果您只想查看相册中的对象,则第二个对象非常有用。

答案 1 :(得分:0)

我创建了一个中央Songmanager对象,可供使用歌曲的所有对象使用,如此

public class SongManager {

   private static SongManager sMan;

   private Map<String, Song> songs = new HashMap<String, Song>();

   public static SongManager getInstance() {
       if (sMan == null) {
           sMan = new SongManager();
       }
       return sMan;
   }

   public void addSong(Song s) {
       songs.put(s.getName, s);
   }

   public Song getSong(String name) {
       return songs.get(name);
   }

}

你的歌曲可以是简单的容器类,如此

public class Song {

private String name;

public void setName(String name) {
    this.name = name;
}

public String getName() {
    return name;
}

}

您可以通过调用SongManager.getInstance(). Create a simple container class for songs all existing Songs to this Manager and in your addSong Method, simply call the getSong`方法随处访问此管理员,以查看该歌曲是否存在。

P.S。我知道我在这里使用的Singleton模式是非常有争议的(例如What is so bad about singletons?,但对我而言,这是最简单的替代方案。