この投稿では、キーの逆順に従ってJavaでマップをソートするさまざまな方法について説明します。

1.使用する TreeMap

TreeMap 赤黒木ベースの実装です Map、コンストラクターに提供されたコンパレーターに従ってソートされます。を渡すことによって 逆順コンパレータTreeMap、キーの逆順に従ってマップを並べ替えることができます。

ダウンロード  コードを実行する

出力:

Sorted map by keys in Reverse Order :
{YELLOW=#FFFF00, RED=#FF0000, GREEN=#008000, BLUE=#0000FF}

 
上記のコードはカスタムコンパレータを使用していますが、Javaが提供する次のような逆順のコンパレータを使用できます。

TreeMap.descendingMap() 方法

使用できます TreeMap.descendingMap() これは、ツリーマップに含まれるマッピングの逆順ビューを返します。

ダウンロード  コードを実行する

⮚Guavaを使用する TreeMap

使用することもできます TreeMap 以下に示すように、Guavaによって提供される実装:

ダウンロード  コードを実行する

2.使用する LinkedHashMap

私たちは、 LinkedHashMap 反復順序は、マップへのキーの挿入順序と同じです。このプロパティを使用して、キーの逆の順序に従って並べ替えられたマップのコピーを作成できます。

マップからキーのリストを作成し、降順で並べ替えるという考え方です。次に、逆にソートされたリストのすべてのキーについて、キーと値のペアを空に挿入します LinkedHashMap。結果として生じる LinkedHashMap キーの逆順で並べ替えられます。

ダウンロード  コードを実行する

出力:

Sorted map by keys in Reverse Order :
{YELLOW=#FFFF00, RED=#FF0000, GREEN=#008000, BLUE=#0000FF}

3.Java8の使用

Java 8 Streamを使用して、マップをキーで逆の順序で並べ替えることもできます。手順は次のとおりです。

  1. マップに含まれるマッピングのセットビューからストリームを取得します。
  2. を使用して、キーの逆順でストリームを並べ替えます Stream.sorted() 方法。
  3. 構築する LinkedHashMap を使用してストリームから Stream.collect()Collectors.toMap().

次のプログラムはそれを示しています。

ダウンロード  コードを実行する

出力:

Sorted map by keys in Reverse Order :
{YELLOW=#FFFF00, RED=#FF0000, GREEN=#008000, BLUE=#0000FF}

 
コレクターの使用を伴わない別のアプローチは、 Stream.forEachOrdered() ストリームの各要素を新しいものに挿入する、逆にソートされたストリームのメソッド LinkedHashMap.

ダウンロード  コードを実行する

出力:

Sorted map by keys in Reverse Order :
{YELLOW=#FFFF00, RED=#FF0000, GREEN=#008000, BLUE=#0000FF}

これで、JavaでMapをキーの逆順で分別ることができます。

 
参照:

1. TreeMap Javadoc – Java SE 8

2. LinkedHashMap Javadoc – Java SE 8 Javadoc