我制作了一个应用,可以显示所有歌曲,专辑,艺术家,流派和播放列表。
我正在检查我的代码有一段时间,因为我正在检查作为参数传递的字符串是否与我的相册类getGenre()方法中的字符串(返回一个字符串)内的字符串相同,从而导致错误。
我通过更改
解决了该错误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);
}
}
Objects.equals和currentSongGenre.equals(genreName)之间有什么区别? ?
我不明白的是,当我在其中记录“ currentSongGenre ”,“ genreName ”和 if语句的值时logcat。
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
那么当两个字符串值明显不同时,它如何工作?
p.s这是我设置流派的方式,如果有更多代码,请告诉我是否需要更多代码。
我使用了2个哈希图:
songIdToGenreIdMap和genreIdToGenreNameMap,在第一个中,我添加了设备上找到的所有歌曲ID和流派ID,第二个中,我用于获取流派名称。
String currentGenreID = songIdToGenreIdMap.get(Long.toString(song.getId()));
String currentGenreName = genreIdToGenreNameMap.get(currentGenreID);
song.setGenre(currentGenreName);
答案 0 :(得分:0)
在第一个程序段中,您不是在与“ genreName”进行比较,而是与“ genre”进行比较。
const birthDate = user.birthDate.toDate();
const birthDateString = birthDate.toDateString();
应该是
if (currentSongGenre.equals(genre))