この記事では、Java のマップにおける値による並べ替えとキーによる並べ替えの問題について、具体的な例を通して説明します。お役に立てれば幸いです。
Map の種類
Java では、Map の主な機能はキーと値のペアを格納することです。値はキーに基づいて取得されるため、重複したキーは許可されません。主に次のカテゴリがあります:
HashMap:
最も一般的に使用されるマップ。キーの HashCode 値に従ってデータを保存し、その値はキーに従って直接取得できます。アクセス速度が速いため、トラバース時にデータが取得される順序は完全にランダムになります。 HashMap では、最大でも 1 つのレコードのキーを Null にすることができますが、複数のレコードの値を Null にすることはできません。つまり、複数のスレッドがいつでも同時に HashMap を書き込むことができます。データの不整合につながります。同期が必要な場合は、Collections の synchronizedMap メソッドを使用して HashMap を同期するか、ConcurrentHashMap を使用できます。 Hashtable は、Dictionary クラスから継承します。違いは、記録されたキーや値が空であることを許可しないこと、つまり、1 つのスレッドのみが Hashtable に書き込むことができることです。これにより、ハッシュテーブルの書き込みのタイミングも遅くなります。
LinkedHashMap
は、Iterator を使用して LinkedHashMap を走査するときに、最初に取得したレコードを最初に挿入する必要があります。また、アプリケーションの数でソートするために、構築中にパラメーターを使用することもできます。走査するときは HashMap よりも遅くなりますが、例外として、HashMap の容量が大きく、実際のデータが小さい場合、LinkedHashMap の走査速度は実際のデータとのみに関係するため、走査は LinkedHashMap よりも遅くなる可能性があります。 HashMap の走査速度はその容量とは関係ありません。
TreeMap
は、保存するレコードをキーに従って並べ替えることができる SortMapインターフェースを実装します。また、Iterator を使用して TreeMap を走査するときに、並べ替えコンパレータを指定することもできます。 、レコードが並べ替えられていることがわかります。
キーによる並べ替え
上記のマップ タイプの紹介から、TreeMap には独自のキー 並べ替え機能があることがわかります。例は次のとおりです。
上記からわかるように、キーによるソートは難しくありませんが、配置によるソートはさらに面倒で、マップを転送する必要があります。値で並べ替え
JavaのMapにはこの機能がないので、自分で実装する必要があります。考え方は次のとおりです: Java の List は比較インターフェースを使用できます。Map は実際には Entry<> のコレクションです
List
並べ替えられた要素を LinkedMap に挿入します
以上がJavaでMapをソートする例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。