我有一张地图清单如下
[[AdGenres-b:key:[177,184],MusicalStyles-b:key:[30],SongTitle:[What 我有 完成],ARTISTNAME:[联合公园],MusicVideoRating:TV-14],MusicalStyles-B:值:[摇滚],PLAYID:[1367],AdGenres-B:值:[摇滚 - 摇滚,摇滚 - 另类],MusicVideo提供者:[华纳音乐集团], 由assetid:[91744],
[[AdGenres-b:key:[177,184],MusicalStyles-b:key:[30],SongTitle:[What 我已经完成了],艺术家名称:[Linkin Park],MusicVideo评分:[TV-14], MusicalStyles-b:价值:[Rock],PlayId:[1360],AdGenres-b:价值:[Rock - 摇滚,摇滚 - 另类],MusicVideo提供者:[华纳音乐集团], 由assetid:[91740]
我想按升序对PlayId排序地图,然后将排序后的地图存储在列表中。 我怎样才能做到这一点?
答案 0 :(得分:3)
根据Comparator<Map<Key, Value>>
实施您自己的map.get("PlayId")
。
示例:
List<Map<String, String>> songs = new ArrayList<Map<String, String>>();
songs.add(new HashMap<String, String>() {{
put("PlayId", "id3");
put("Song Title", "some title");
}});
songs.add(new HashMap<String, String>() {{
put("PlayId", "id5");
put("Song Title", "some title");
}});
songs.add(new HashMap<String, String>() {{
put("PlayId", "id2");
put("Song Title", "some title");
}});
Collections.sort(songs, new Comparator<Map<String, String>>() {
@Override
public int compare(Map<String, String> o1, Map<String, String> o2) {
return o1.get("PlayId").compareTo(o2.get("PlayId"));
}
});
答案 1 :(得分:0)
您需要什么样的自定义比较器。
创建一个实现Comparator的类:
class MyMapComparator {
public int compare(Map m1, Map m2) {
//get play id from both maps here and compare them
return playId1 - playId2;
}
}
然后只使用MyMapComparator
的实例对您的列表进行排序。
Collections.sort(listTobeSorted, new MyMapComparator());