Reputation: 41939
I'd like to create a map
that contains entries consisting of (int, Point2D)
How can I do this in Java?
I tried the following unsuccessfully.
HashMap hm = new HashMap();
hm.put(1, new Point2D.Double(50, 50));
Upvotes: 130
Views: 470555
Reputation: 51613
With the newer Java versions (i.e., Java 9 and forwards) you can use :
Map.of(1, new Point2D.Double(50, 50), 2, new Point2D.Double(100, 50), ...)
generically:
Map.of(Key1, Value1, Key2, Value2, KeyN, ValueN)
Bear in mind however that Map.of
only works for at most 10
entries, if you have more than 10
entries that you can use :
Map.ofEntries(entry(1, new Point2D.Double(50, 50)), entry(2, new Point2D.Double(100, 50)), ...);
Upvotes: 22
Reputation: 407
I use such kind of a Map population thanks to Java 9. In my honest opinion, this approach provides more readability to the code.
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);
}
Upvotes: 7
Reputation: 11983
Java 9
public static void main(String[] args) {
Map<Integer,String> map = Map.ofEntries(entry(1,"A"), entry(2,"B"), entry(3,"C"));
}
Upvotes: 32
Reputation: 846
There is even a better way to create a Map along with initialization:
Map<String, String> rightHereMap = new HashMap<String, String>()
{
{
put("key1", "value1");
put("key2", "value2");
}
};
For more options take a look here How can I initialise a static Map?
Upvotes: 37
Reputation: 34677
Map <Integer, Point2D.Double> hm = new HashMap<Integer, Point2D>();
hm.put(1, new Point2D.Double(50, 50));
Upvotes: 157