java一切都很好,但我不明白它是如何工作的?
我制作了一个应用程序,可以显示所有歌曲、专辑、艺术家、流派和播放列表
我检查了一下我的代码,因为我得到了一个错误,因为我正在检查作为参数传递的字符串是否与返回字符串的Album类GetGene()方法中的字符串相同
我通过更改
public ArrayList<Song> getSongsByGenre(String genreName) {
ArrayList<Song> songsByGenre = new ArrayList<>();
for (Song song : songs) {
String currentSongGenre = song.getGenre();
if (currentSongGenre.equals(genreName))
songByGenre.add(song);
}
}
至
public ArrayList<Song> getSongsByGenre(String genreName) {
ArrayList<Song> songsByGenre = new ArrayList<>();
for (Song song : songs) {
String currentSongGenre = song.getGenre();
if (Objects.equals(currentSongGenre, genreName))
songsByGenre.add(song);
}
}
对象之间的区别是什么。平等和公正。等于(genreName)
另外,我不明白的是,当我在logcat中记录“CurrentSongGene”、“genreName”和if语句的值时
Log.d(TAG, "value currentSongGenre: " + currentSongGenre);
Log.d(TAG, "value genreName: " + genreName);
Log.d(TAG, "value ifstat: " + currentSongGenre + " Equals " + genreName);
Logcat调试
SongList: value currentSongGenre: null
SongList: value genreName: Hip-Hop/Rap
SongList: value ifstat: null Equals Hip-Hop/Rap
那么,当两个字符串值明显不同时,它是如何工作的呢
这就是我设置流派的方式,如果你需要更多的代码,请告诉我,因为代码太多了
我使用2个哈希映射:
songIdToGenreIdMap&;genreIdToGenreNameMap,在第一个列表中,我添加了在设备上找到的所有歌曲Id和流派Id,第二个列表用于获取流派名称
String currentGenreID = songIdToGenreIdMap.get(Long.toString(song.getId()));
String currentGenreName = genreIdToGenreNameMap.get(currentGenreID);
song.setGenre(currentGenreName);
# 1 楼答案
在你的第一块中,你不是在比较“genreName”,而是在比较“genre”
应该是