0

Java EnumMaps では、列挙型の序数値をインデックスとして使用して配列で実装できるため、一定のアクセス時間があります。

EnumMap がある場合、どうすれば配列を取得できますか?

例:

enum Abc { A, B, C };
EnumMap<Abc, String> abc = new EnumMap<Abc, String>(Abc.class);
abc.put(Abc.A, "α");
abc.put(Abc.B, "β");
abc.put(Abc.C, "γ");

String[] abcarray = ?;

変数abcarrayには、次のように初期化された場合と同じものが含まれている必要があります。

String[] abcarray = new String[] { "α", "β", "γ" };

ドキュメントにメソッドが見つかりません。なぜそのような機能が欠けているのですか?

4

2 に答える 2

2

メソッドを介しMap.values()EnumMap移動できます( anは単なる特殊化された であることを思い出してMapください):

String[] abcarray = abc.values().toArray(new String[abc.size()]);

そのような方法が存在しない理由については、推測するしかありません。

しかし、コレクションのフレームワークには 2 つの共通のテーマがあり、ここで重要になります。

  • より単純な操作を連鎖させることにより、より複雑な操作を可能にします (これにより、オプションを利用可能に保ちながら、実装する必要がある操作/メソッドの総数を減らすことができます)
  • 配列を取り除きます。「コレクションエリア」に入ると、配列は実際には使用されません
于 2013-11-05T16:25:12.580 に答える
2

少し抽象化されています...試してください:

String[] abcarray = abc.values().toArray(new String[abc.size()]);
于 2013-11-05T16:25:30.550 に答える