0

このデータ構造を並べ替えて、Key-Valueマッピングを保持するにはHashMap<String, Integer>どうすればよいですか?キーではなく値で並べ替えたい。

Collection<Integer> counts = tableFrequency.values();

しかし、その後、キーマッピングが失われます。または、HashMapの代わりに使用できたより良い連想データ構造はありますか?

4

3 に答える 3

6

をその値で並べ替えるにはMap、その値を取得しentrySetて、カスタムで並べ替えることができますComparator

List<Entry<K,V>> sorted = new ArrayList<>(map.entrySet());
Collections.sort(sorted, new Comparator<Entry<K,V>>() {
    public int compare(Entry<K,V> o1, Entry<K,V> o2) {
        return o1.getValue().compareTo(o2.getValue());
    }
};
于 2012-04-16T00:02:26.353 に答える
2

TreeMap は、要素を追加した順序で保持します。それはあなたにとって完璧な答えのようです。

ただし、検索など、一部のアクションは HashMap よりもはるかに遅くなることに注意してください...

于 2012-04-16T00:04:52.947 に答える
1

クラスTreeMapはあなたが望むものです:

TreeMap treeMap = new TreeMap();

treeMap.put("One", new Integer(1));
treeMap.put("Two", new Integer(2));

Object obj = treeMap.get("Two");
System.out.println(obj);

要素を並べ替えるには、compare() メソッドを使用します。

あなたの新しい質問は値による並べ替えに関するものなので、これはこの投稿の複製です

于 2012-04-16T00:04:57.737 に答える