检查对象是否存在,使用字段字符串
我有一个歌类(字段:字符串名称)和一个相册类(初始化Arraylist填充歌曲对象),我添加一个方法(addSongAlbum(字符串名称参数))首先检查歌曲是否已经在专辑中。一切正常,但现在我想检查歌曲是否存在于专辑之外。考虑到该方法的输入是一个字符串,我该如何做到这一点?检查对象是否存在,使用字段字符串
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;
}
我想创建一个*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模式是非常controversal(见例如What is so bad about singletons?,但对我来说这里是最简单的工作方案。
你需要有所有Song
对象的List
地方。或者在构建时将它们添加到静态List
(您将需要记住在不再用于让内存被垃圾收集时将其删除),或者在所有对象中都有一个类似的List
然后在那些对象中进行搜索。如果你想检查全部Song
创建的对象,第二个是有用的,如果你只想检查在专辑中的对象,第二个是有用的。
这很有道理,所以我必须将它们组合在一些内容中,然后去思考这个问题,没有办法检查所有已创建的类(对不起,如果问题是编程中的新的愚蠢,只是想确定) – Noobest
是的,你需要一个WA Ÿ去找他们。除非你与他们有联系(你可以访问的对象的归档,一个类的静态字段,单例类),否则你不能使用它们,并且它们将最终收集垃圾。 –
代码是值得1024个字,请创建一个[MCVE。 –
我不你真的很明白你的问题,你想找到你的歌曲已经添加在哪张专辑中吗? – Germain
看看你的代码的第2行和第3行,考虑你实际上通过'album.add'添加了什么。 – CollinD