我有一个包含许多歌曲对象的 ArrayList。
ArrayList<Song> aSong = new ArrayList<Song>();
Song 类如下所示:
public class Song {
private String sName;
private String sLength;
public Song(String name, String length){
sName = name;
sLength= length;
}
public String getName(){
return sName;
}
public String getLength(){
return sLength;
}
public void edit(String name, String length){
sName = name;
sLength= length;
}
}
我正在尝试使用 ArrayList 方法“包含”来查看是否存在歌曲
// example
aSong.contains("Song 1")
但是即使这首歌确实存在于 ArrayList 中,这也会返回 false。
如有任何帮助,我们将不胜感激,并提前致谢。
最佳答案
不,"Song 1"
ArrayList
中绝对不存在- 因为这是一个字符串,而不是 Song
。
三个选项:
检查列表中的每首歌曲,看看它是否具有该名称。这相当容易做到,但如果您在多个地方需要该功能,您肯定希望将其提取到一个单独的方法中。像这样的东西:
public static Song findSongByName(Iterable<? extends Song> songList, String name) { // TODO: Nullity checks for (Song song : songList) { if (song.getName().equals(name)) { return song; } } return null; }
覆盖
equals
在Song
根据歌曲名称,然后调用aSong.contains(new Song("Song 1")
。这可能不是一个好主意,因为我怀疑如果你有两个Song
名称相同但长度不同的对象,您不希望将它们视为相等。- 构建
Map<String, Song>
这样您就可以根据歌曲名称在列表中查找歌曲。如果您需要从同一列表中查找多首歌曲,这将是一个好主意。
关于java - 类型转换和ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6971313/