元のデータは次のようになります。
String data = "{ \"a\":1, \"b\":3 , \"c\":-1 }";
私の最初のステップは、それを HashMap に変換することです。
Gson gson = new Gson();
HashMap<String, Double> map = gson.fromJson(data, HashMap.class);
次に、キーを値で並べ替えます。
public static List<String> sortHashMap(final HashMap<String, Double> map) {
Set<String> set = map.keySet();
List<String> keys = new ArrayList<String>(set);
Collections.sort(keys, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
if (map.get(s1) < map.get(s2)) {
return 1;
}
return 0;
}
});
return keys;
}
最後に、上位 N 個のキーを取得します。
keys.subList(0, N);
最終的に結果が得られますが、エレガントな方法ではないと思います。
何か便利な作り方はないのかな?