Java 搜索特定密钥的哈希映射数组

Java 搜索特定密钥的哈希映射数组,java,android,Java,Android,我有一个ArrayList的HashMap如下: ArrayList<HashMap<String, String>> playListSongs = new ArrayList<HashMap<String, String>>(); for (int i1 = 0; i1 < nl.getLength(); i1++) { // creating new HashMap HashMap<String, String>

我有一个
ArrayList
HashMap
如下:

ArrayList<HashMap<String, String>> playListSongs = new ArrayList<HashMap<String, String>>();
for (int i1 = 0; i1 < nl.getLength(); i1++) {
  // creating new HashMap
  HashMap<String, String> map = new HashMap<String, String>();
  Element e = (Element) nl.item(i1);
  // adding each child node to HashMap key => value
  map.put(KEY_SONGS, String.valueOf(i1));
  map.put(KEY_FILE, parser.getValue(e, KEY_FILE));
  map.put(KEY_DURATION, parser.getValue(e, KEY_DURATION));
  map.put(KEY_FILE, parser.getValue(e, KEY_FILE));
  map.put(KEY_ALBUM, parser.getValue(e, KEY_ALBUM));
  map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE));
  map.put(KEY_ARTIST, parser.getValue(e, KEY_ARTIST));
  map.put(KEY_ARTWORK, parser.getValue(e, KEY_ARTWORK));
  // Songs List of selected playlist
  playListSongs.add(map);
  // list view bind
  PopulateList(playListSongs);
}
ArrayList playListSongs=new ArrayList();
我按如下方式填充列表:

ArrayList<HashMap<String, String>> playListSongs = new ArrayList<HashMap<String, String>>();
for (int i1 = 0; i1 < nl.getLength(); i1++) {
  // creating new HashMap
  HashMap<String, String> map = new HashMap<String, String>();
  Element e = (Element) nl.item(i1);
  // adding each child node to HashMap key => value
  map.put(KEY_SONGS, String.valueOf(i1));
  map.put(KEY_FILE, parser.getValue(e, KEY_FILE));
  map.put(KEY_DURATION, parser.getValue(e, KEY_DURATION));
  map.put(KEY_FILE, parser.getValue(e, KEY_FILE));
  map.put(KEY_ALBUM, parser.getValue(e, KEY_ALBUM));
  map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE));
  map.put(KEY_ARTIST, parser.getValue(e, KEY_ARTIST));
  map.put(KEY_ARTWORK, parser.getValue(e, KEY_ARTWORK));
  // Songs List of selected playlist
  playListSongs.add(map);
  // list view bind
  PopulateList(playListSongs);
}
for(int i1=0;i1value
map.put(KEY_SONGS,String.valueOf(i1));
put(KEY_文件,parser.getValue(e,KEY_文件));
put(KEY_DURATION,parser.getValue(e,KEY_DURATION));
put(KEY_文件,parser.getValue(e,KEY_文件));
map.put(KEY_相册,parser.getValue(e,KEY_相册));
put(KEY_TITLE,parser.getValue(e,KEY_TITLE));
put(KEY_-ARTIST,parser.getValue(e,KEY_-ARTIST));
map.put(KEY_ARTWORK,parser.getValue(e,KEY_ARTWORK));
//所选播放列表的歌曲列表
播放歌曲。添加(地图);
//列表视图绑定
大众列表(播放歌曲);
}
现在,我想从HashMap数组列表(PlaySongs)中获取特定艺术家的专辑和歌曲以及歌曲计数,以将其绑定到列表视图

我怎样才能做到这一点呢?

像这样试试

     for (int i1 = 0; i1 < playListSongs.size(); i1++) {
                    HashMap<String, String> map = playListSongs.get(i1);
String artist=map.get(KEY_ARTIST);                    
String songs=   map.get(KEY_SONGS);
String file=   map.get(KEY_FILE);
String duration=   map.get(KEY_DURATION);

SongDescription description=new SongDescription(artists,songs,file,duration);
desList.add(description);                     
if(artists.equals(desiredAtrist)){
songs----------->You need
}
for(int i1=0;i1你需要
}

}

您可以使用此方法获取特定艺术家的歌曲:

private ArrayList<String> getSongsByArtist(String artist){
    ArrayList<String> songs = new ArrayList<String>();
    for (HashMap<String, String> hashMap : playListSongs) {
        if(hashMap.get(KEY_ARTIST).equals(artist)){
            songs.add(hashMap.get(KEY_TITLE));
        }
    }
    return songs;       
}
private ArrayList getSongsByArtist(弦乐艺术家){
ArrayList歌曲=新建ArrayList();
用于(HashMap HashMap:播放歌曲){
if(hashMap.get(KEY_ARTIST.equals(ARTIST)){
添加(hashMap.get(KEY_TITLE));
}
}
返回歌曲;
}
要获得不同的艺术家,请使用以下方法:

private ArrayList<String> getDistinctArtists(){
    HashMap<String,String> duplicateTracker = new HashMap<String, String>();
    ArrayList<String> distinctArtists = new ArrayList<String>();
    for (HashMap<String, String> hashMap : playListSongs) {
        // Check whether artist is already added or not
        if(duplicateTracker.containsKey(hashMap.get(KEY_ARTIST))==false){
            //Add artist name to hash map
            duplicateTracker.put(hashMap.get(KEY_ARTIST), hashMap.get(KEY_ARTIST));
            distinctArtists.add(hashMap.get(KEY_ARTIST));
        }
    }
    return distinctArtists;     
}
private ArrayList getdistinctarts(){
HashMap duplicateTracker=新HashMap();
ArrayList distinctarts=新的ArrayList();
用于(HashMap HashMap:播放歌曲){
//检查是否已添加艺术家
if(duplicateTracker.containsKey(hashMap.get(KEY_-ARTIST))==false){
//将艺术家名称添加到哈希映射
duplicateTracker.put(hashMap.get(KEY_-ARTIST)、hashMap.get(KEY_-ARTIST));
add(hashMap.get(KEY_ARTIST));
}
}
归来主义者;
}

我是android新手,我很想知道答案,因为据我所知,使用带有列表视图的适配器只能在数字上工作。你可以考虑使用数值代替。当然,我可能错了。很简单,在放进地图之前,你列了一个列表(n1),只需做相反的操作查看更新的答案。您已经制作了播放列表歌曲列表。就像播放列表是一个原始列表一样,它就像艺术家专辑enrique Insomanic Other艺术家专辑You了解所需的艺术家。对吗?所以只要比较一下,如果它被放入列表库中,我的问题是如何从数组列表中仅获取不同的艺术家,因为一个艺术家在数组列表中有许多歌曲。我添加了从数组列表中获取不同艺术家的方法