我有一个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;
}
答案 0 :(得分:0)
您需要在某处拥有List
个Song
个对象。在构造时将它们添加到静态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?,但对我而言,这是最简单的替代方案。