有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    在你的第一块中,你不是在比较“genreName”,而是在比较“genre”

    if (currentSongGenre.equals(genre))
    

    应该是

    if (currentSongGenre.equals(genreName))