Javaのゼロベースのハンズオンシリーズ:HashMapのソート方法クリーンスイープ

HashMapのは、一種の気絶しやすくするJavaを、学習の初めに、今日はいくつかの一般的な方法、クリーンスイープをまとめました。HashMapのソートを取得、これを読んでは十分です。

1.概要

本明細書にソートキー(鍵)と方法(値)の値をハッシュマップは以下の通りであります:

  • TreeMapの
  • ArrayListの和Collections.sort()
  • TreeSetの
  • ストリームAPIを使用します

ソートするには、次のようにのは、単純なHashMapを構築してみましょう:

Map<String, Integer> unsortMap = new HashMap<>(); unsortMap.put("key3", 5); unsortMap.put("key2", 4); unsortMap.put("key1", 3); unsortMap.put("key4", 2); unsortMap.put("key5", 1);

2. TreeMapの

第一のアプローチ、使用のTreeMapの一種。デフォルトのロジックを実装するJavaのTreeMapを注文されています。

ソートされたデータに挿入されたTreeMapのキーに従います。

だから、これは一種のHashMap TreeMapのを使用するための簡単かつ効果的な方法です。一つだけの文:

TreeMap<String, Integer> sorted = new TreeMap<>(map); System.out.println(sorted);

出力は次のようになります。

{key1=3, key2=4, key3=5, key4=2, key5=1}

3. ArrayListの

我々はまた、二次ソートにArrayListのを使用して、以前と同じではありませんすることができます:ここでArrayListのできる唯一のソートキーまたは値によって

キーによるソート3.1

ArrayListのキー支援分類するために使用:ちょうどキーセットから取得した地図、リスト構造は、コードを見て、並べ替えのコレクションをソートするために、独自のメソッドを使用することができます。

 List<String> sorted = new ArrayList<>(map.keySet()); Collections.sort(sorted);

出力:

[key1, key2, key3, key4, key5]

私は個人的に試すことができパートナーシップにはほとんど関心があり、ここに書いていない、そして、我々は、ソートされたリストを横切ることができる内部マップから適切な値を取ります。

値3.2並び替え

同様に、我々は、この方法は、HashMapを()の値を使用することができ、値リスト設定された構成の全てを除去し、次いでCollections.sortソートコードを使用する以下の通りであります:

List<String> sorted = new ArrayList<>(map.values()); Collections.sort(sorted);

出力:

[1, 2, 3, 4, 5]

4. TreeSetの

時には、店内オブジェクトHashMapのは、例えば、そこに繰り返されてもよい:学生(年齢= 28、名前=赤)、これらの重複する値を削除することが期待ソートするとき、あなたはTreeSetのを使用することができます。

設定が保存されたデータが一意である容器である、繰り返しません

ここでは、使用することは非常にシンプルですが、またすることができますセットやコレクションのキー値に渡されたArrayListに似たTreeSetのを、構築するために:

SortedSet<Integer>  valueSorted = new TreeSet<>(map.values()); 或者 SortedSet<String> keySorted = new TreeSet<>(map.keySet());

重複排除の並べ替えを実装するために、クラス話すの基本的な考え方に従ってください。

5.ストリームとラムダ

我々はJDK 1.8の上に使用している場合、我々は、ラムダ式を推奨し、ストリームAPIをソート

蒸気流構造、それを比較し、比較私たち自身を記述する必要はありません、着信ソートする、Javaが内部来る:私たちは、シンプルで行う必要があります。ラムダ式が何であるかを心配されないように、そして私たちの後ろ、それは今だけうまくソートする方法を知っておく必要があります。

キーによるソート5.1

まず、次のように、entrySet.streamフローパイプラインを使用して構築ソートして、内蔵の比較で渡された関数を呼び出して、大きな発表となりました:

map.entrySet()
   .stream() .sorted(Map.Entry.<String, Integer>comparingByKey()) .forEach(System.out::println);

出力:

key1=3
key2=4
key3=5
key4=2
key5=1

値5.2並び替え

あなたが値に従ってソートする場合は同様に、唯一の組み込みの比較に合格する必要があります。comparingByValueへ

map.entrySet()
   .stream() .sorted(Map.Entry.comparingByValue()) .forEach(System.out::println);

出力:

key5=1
key4=2
key1=3
key2=4
key3=5

スチームと表現ラムダを使用する方法、強くお勧めします!

6.まとめ

最後に行われ、彼は簡単で、疲れていないノックする手を与えました。
今日はHashMapを並べ替えるには、いくつかの一般的な方法をまとめたもので、問題がある:それをソートするために私たち自身のクラスの建設であれば、どのように?
そして、これは、Comparableインタフェースを実装する内部比較ロジックを書き換え、そして私たちは、基本クラスの後ろについて話して、詳細に行くことです。

今日のコード注目のVX番号「ややバグを書く」、舞台裏返信「HashMapのは」、得ることができます。

また、小さなパートナー、または賞賛にそれを与えます。

おすすめ

転載: www.cnblogs.com/coderstudio/p/11520599.html