1. ホーム
  2. java

[解決済み] Java 順序型マップ

2022-03-15 08:24:58

質問

Javaで、キーと値のペアを保存してアクセスするためのMapのように動作しますが、キーと値のリストが同じ順序であるように、キーの順序付きリストを返すことができるオブジェクトがありますか?

ということで、説明-by-codeとして、私の架空のOrderedMapのような振る舞いをするものを探しているのです。

OrderedMap<Integer, String> om = new OrderedMap<>();
om.put(0, "Zero");
om.put(7, "Seven");

String o = om.get(7); // o is "Seven"
List<Integer> keys = om.getKeys();
List<String> values = om.getValues();

for(int i = 0; i < keys.size(); i++)
{
    Integer key = keys.get(i);
    String value = values.get(i);
    Assert(om.get(key) == value);
}

解決方法は?

その ソートマップ インターフェイス(実装は ツリーマップ を利用するとよいでしょう。

インターフェイスにはメソッドがあります。

  • keySet() これは、昇順のキーのセットを返します。
  • values() これは、すべての値のコレクションを、対応するキーの昇順で返します。

このインターフェースは、まさにあなたの要求を満たしているわけです。しかし、キーは意味のある順序でなければなりません。そうでない場合は LinkedHashMap ここで、順序は挿入順序によって決定される。