Java で順序付きマップを作成する
マップは、キーと値のペアを格納する Java のデータ構造です。マップは、コレクション
階層に存在するインターフェース
です。これらのキーは一意であるため、重複するキーは許可されていません。ただし、キーにマップされた変数の値が重複する可能性があります。HashMap
、LinkedHashMap
、TreeMap
などのクラスは、Map
インターフェースを実装します。
Java の TreeMap
クラスを使用してマップを並べ替える
以下に、プログラムは Java プログラムでのマップの順序を示します。
import java.util.TreeMap;
public class Main {
public static void main(String[] args) {
TreeMap<String, Integer> map = new TreeMap<String, Integer>();
map.put("Third", 1);
map.put("First", 2);
map.put("Second", 3);
for (String key : map.keySet()) {
System.out.println(key + " ,ID = " + map.get(key));
}
}
}
TreeMap
クラスは、マップ値を昇順で並べ替えます。また、SortedMap
インターフェースを内部的に実装しているため、新しいキーワードを使用してマップインスタンスが作成されます。
ツリーマップ内のデータ型は、インスタンス化時に指定されます。Map
キーは String
タイプであり、その値は Integer
タイプです。
put
関数は、キーと値のペアをツリーマップに挿入します。これで、for-each
ループが定義され、マップを反復処理します。Java では、マップ上で直接反復することはできません。したがって、マップのキーは最初に Set
インスタンスに変換されます。
map.keySet
関数は、マップに存在するキーのセット
を返します。この関数は TreeMap
クラスにあり、存在するキーの順序付けられたビューを返します。get
関数は、キーに対応する値を取得します。
以下は昇順の出力です。
First, ID = 2 Second, ID = 3 Third, ID = 1
Java 8 関数を使用してマップの順序を作成する
Java 8 は、ユーザーが一連の関数を操作できるようにする関数型プログラミングのサポートを提供します。
Streams
は、java.util
パッケージのインターフェースであり、単一のステートメントで順次操作を簡単に処理できます。Streams
関数は、エミッターがデータを送信するパイプラインで機能します。ユーザーのニーズに応じて、フィルタリング、処理、変換などが行われます。
package F09;
import static java.util.AbstractMap.SimpleEntry;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class MapOrdering {
public static void main(String[] args) {
Map<String, String> mapSortedByKey =
Stream
.of(new SimpleEntry<>("key3", "value1"), new SimpleEntry<>("key1", "value2"),
new SimpleEntry<>("key2", "value3"))
.sorted(Map.Entry.comparingByKey())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
(oldVal, newValue) -> oldVal, LinkedHashMap::new));
System.out.println();
System.out.print("Ordered List: ");
for (String s1 : mapSortedByKey.keySet()) {
System.out.print(" " + s1);
}
}
}
Stream
インターフェースはさまざまな機能を提供し、それらを処理するためにさまざまなクラスでその実装を取得します。ここで、キーと値のペアのストリームは、new SimpleEntry
クラスを使用して形成されます。値は of
関数に挿入されてストリームを形成します。
チェーンシリーズでは、sorted
関数が呼び出されます。この関数は、Comparator
インスタンスを使用して、定義された順序に従ってキーを順番に配置します。関数 comparingByKey
は、キーを自然な昇順で比較するコンパレータを返します。
sorted
関数は、最終的に昇順で配置された値のストリームを返します。Stream
クラスの collect
関数は、指定されたマップ値を新しい LinkedHashMap
インスタンスに収集します。クラスは、提供されたシーケンスの挿入順序を保持します。この関数は、Collector
インスタンスをパラメーターとして受け取ります。
最初のパラメーターは、新しいコンテナーを作成するサプライヤーの toMap
関数です。2 番目のパラメーターは値を累積する BiConsumer
であり、最後のパラメーターは結果をマージするコンバイナーとして機能する BiConsumer
です。したがって、LinkedHashMap::new
コマンドは結果を結合し、形成されたインスタンスを返します。
mapSortedByKey
インスタンスは、上記の for-each
ループを使用して繰り返されるシーケンシャルマップ要素を保持するようになりました。結果のマップキーは、以下の標準出力に出力されます。
Ordered List : key1 key2 key3
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedIn