ホームページ  >  記事  >  Java  >  JavaでMapをソートする例を詳しく解説

JavaでMapをソートする例を詳しく解説

怪我咯
怪我咯オリジナル
2017-07-02 10:38:021371ブラウズ

この記事では、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。