首页 > 解决方案 > 使用 Hashmap 获取额外参数与使用拆分

问题描述

我正在遍历属于MediaStore. 我遍历它们并创建一个 track id->genre id 的映射,供我的 scan tracking 方法以后使用。我正在做的类似于以下内容:

private void scanGenres()
{
   // Iterate over genres block start.
      // Iterate over tracks by a genre start
         mTracksGenreHashMap.put(trackId, genreId);
      // Iterate over tracks by a genre start
   // Iterate over genres block end.
}

我意识到我还需要存储流派名称,而不仅仅是流派 ID 以供我的曲目扫描方法使用。我有两个选择。我可以HashMap为流派名称创建一个新的流派 ID。我的另一个方法是将流派名称放在 my 的值中mTracksGenreHashMap HashMap。第一个选项:

private void scanGenres()
{
   // Iterate over genres block start.
      // Iterate over tracks by a genre start
         mTracksGenreHashMap.put(trackId, genreId);
         mGenreIdToNameHashMap.put(genreId, genreName);
      // Iterate over tracks by a genre start
   // Iterate over genres block end.
}

第二种选择:

private void scanGenres()
{
   // Iterate over genres block start.
      // Iterate over tracks by a genre start
         mTracksGenreHashMap.put(trackId, genreId + ";" + genreName);
      // Iterate over tracks by a genre start
   // Iterate over genres block end.
}

然后,在我的扫描轨道方法上:

private void scanTracks()
{
    // Iterate over tracks in MediaStore start
        // Get track Id.
        // First option.
        long genreId = mTracksGenreHashMap.get(trackId); 
        String genreName = mGenreIdToNameHashMap.get(genreId);

        // OR

        // Second option
        string[] genreIdName = mTracksGenreHashMap.get(trackId);
        string genreId = genreIdName[0];
        string genreName = genreIdName[1];
    // Iterate over tracks in MediaStore end
}

我想知道哪种解决方案性能更好。请记住,在每种方法中,我都会遍历曲目。在第一个上,我循环播放一个流派中的曲目。在scanTracks()我循环所有曲目。

谢谢。

标签: javaandroid

解决方案


听起来“流派”本身就是一个有意义的概念,因此它应该在您的程序中表示为一个,而不是跨不同数据结构的数据片段:

class Genre {
    public final String id;
    public final String name;
}

mTracksGenreHashMap.put(trackId, genreObject);

“我想知道哪种解决方案效果更好”

差异太小,在实际用例中没有意义。


推荐阅读