一切正常,但我不明白它是如何工作的?

时间:2019-01-17 17:57:07

标签: java android operators

我制作了一个应用,可以显示所有歌曲,专辑,艺术家,流派和播放列表。

我正在检查我的代码有一段时间,因为我正在检查作为参数传递的字符串是否与我的相册类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);

1 个答案:

答案 0 :(得分:0)

在第一个程序段中,您不是在与“ genreName”进行比较,而是与“ genre”进行比较。

const birthDate = user.birthDate.toDate();
const birthDateString = birthDate.toDateString();

应该是

if (currentSongGenre.equals(genre))