Javaでマップを作成する


85

map構成されるエントリを含むを作成したい(int, Point2D)

Javaでこれを行うにはどうすればよいですか?

以下を試しましたが失敗しました。

HashMap hm = new HashMap();

hm.put(1, new Point2D.Double(50, 50));

回答:


117
Map <Integer, Point2D.Double> hm = new HashMap<Integer, Point2D>();
hm.put(1, new Point2D.Double(50, 50));

8
あなたも行う必要がありますimport java.util.Map; import java.util.HashMap;import java.util.*;
マックス

21

初期化とともにマップを作成するさらに良い方法があります。

Map<String, String> rightHereMap = new HashMap<String, String>()
{
    {
        put("key1", "value1");
        put("key2", "value2");
    }
};

その他のオプションについては、こちらをご覧ください。静的マップを初期化するにはどうすればよいですか?


4
これは、マップを初期化するための非常に悪い方法です。
花王

1
@カオなぜ?これには操作が視覚的に含まれているだけですが、それ以外はこの質問の一番上の回答と同じです。
アンソニーマンスール

5
いいえ、ちがいます。これは二重中括弧の初期化であり、一般的に言えば、アンチパターンです。これが理由です。
花王

18

Java 9

public static void main(String[] args) {
    Map<Integer,String> map = Map.ofEntries(entry(1,"A"), entry(2,"B"), entry(3,"C"));
}

9
Map<Integer, Point2D> hm = new HashMap<Integer, Point2D>();

Point2D.DoublePoint2D= \のようには見えません
Luiggi Mendoza 2013

を使用するとMap<int, Point2D> hm = new HashMap<int, Point2D>()、次のエラーが発生します:トークン "int"の構文エラー、このトークンの後にディメンションが必要です。
ケビンメレディス

Javaマップがプリミティブ型をサポートしていないことを忘れました。それを修正しました。
Achrome 2013

しかし、[key、value]の値としてPoint2Dが必要です。:/
ケビンメレディス

それは私が最初に書いたものでした。
Achrome 2013

1

私はJava9のおかげで、このような種類のMapポピュレーションを使用しています。私の正直な意見では、このアプローチにより、コードが読みやすくなります。

  public static void main(String[] args) {
    Map<Integer, Point2D.Double> map = Map.of(
        1, new Point2D.Double(1, 1),
        2, new Point2D.Double(2, 2),
        3, new Point2D.Double(3, 3),
        4, new Point2D.Double(4, 4));
    map.entrySet().forEach(System.out::println);
  }

1

新しいJavaバージョン(つまり、 Java 9以降)では、次のものを使用できます。

Map.of(1, new Point2D.Double(50, 50), 2, new Point2D.Double(100, 50), ...)

一般的に:

Map.of(Key1, Value1, Key2, Value2, KeyN, ValueN)

ただし、使用できるエントリが複数ある場合Map.of、多くの 10エントリのみ機能10することに注意してください。

Map.ofEntries(entry(1, new Point2D.Double(50, 50)), entry(2,  new Point2D.Double(100, 50)), ...);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.