Is it possible in Java to make a Dictionary with the items already declared inside it? Just like the below C# code:
Dictionary<string, int> d = new Dictionary<string, int>() { {"cat", 2}, {"dog", 1}, {"llama", 0}, {"iguana", -1} };
How do I do this and what type do I use? I've read that Dictionary is obsolete.
This will do what you want:
Map<String,Integer> map = new HashMap<String, Integer>(){{ put("cat", 2); put("dog", 1); put("llama", 0); put("iguana", -1); }};
This statement creates an anonymous subclass of HashMap, where the only difference from the parent class is that the 4 entries are added during instance creation. It's a fairly common idiom in the Java world (although some find it controversial because it creates a new class definition).
Because of this controversy, as of Java 9 there is a new idiom for conveniently constructing maps: the family of static Map.of methods.
With Java 9 or higher you can create the map you need as follows:
Map<String, Integer> map = Map.of( "cat", 2, "dog", 1, "llama", 0, "iguana", -1 );
With larger maps, this alternative syntax may be less error-prone:
Map<String, Integer> map = Map.ofEntries( Map.entry("cat", 2), Map.entry("dog", 1), Map.entry("llama", 0), Map.entry("iguana", -1) );
(This is especially nice if Map.entry is statically imported instead of being referenced explicitly).
Besides only working with Java 9+, these new approaches are not quite equivalent to the previous one:
However, these differences shouldn't matter for many use cases, making this a good default approach for newer versions of Java.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With