1

Web (および Stackoverflow) をよく検索しましたが、探しているものが正確に見つかりませんでした。また、その概念を本当に理解できませんでした。

Javaの割り当てとして、いくつかの値を格納するtreeMapがあります。

static Map<String, Double> customers = new TreeMap<String, Double>();

当然、文字列値の昇順で格納されます。しかし、Double値で昇順で値を保存したいと思います。コンパレータでこれを達成するにはどうすればよいですか?詳細をいただければ幸いです。

また、この割り当てでは、異なる値を格納する別の別の treeMap があります。再度、以下のように宣言します。

static Map<String, Double> customers = new TreeMap<String, Double>();

文字列の昇順で値を格納しても問題ありません。このように値を出力するために使用していますが、Doubleでソートされた昇順で値を出力する必要もあります。では、treeMap を再ソートするにはどうすればよいでしょうか。繰り返しますが、詳細をいただければ幸いです。

4

2 に答える 2

2

を再ソートすることはできませんTreeMapTreeMap構築時に決定される固定の反復順序があります。別の並べ替え順序が必要な場合は、別のデータ構造を使用してください。

このように値を出力するために使用していますが、Doubleでソートされた昇順で値を出力する必要もあります。

したがって、ソートについて心配する必要はありませんTreeMapList<Double>マップ内の値を作成し、それらを並べ替えます。

List<Double> values = new ArrayList<Double>(customers.values());
Collections.sort(values);
System.out.println(values);
于 2012-04-06T16:30:38.773 に答える
1

別のマップを作成します。

Map<Double, String> values = new TreeMap<Double, String>();

常に両方のマップに追加します (たとえば、ヘルパー メソッドを介して)。メモリの制約がない限り、customersマップは顧客ごとにvalues並べ替えられ、Double値が表すものによって並べ替えられます。

値が重複する可能性がある場合は、代わりに顧客のリスト (要件によってはセット) を作成できます。

Map<Double, List<String>> values = new TreeMap<Double, List<String>>();
于 2012-04-06T16:31:46.693 に答える