I know I can declare and initialize a List
using double braces:
// (1)
List<Object> myList = new ArrayList<object>(){{
add("Object1");
add("Object2");
}};
But I want a List
of <Map<Object,Object>>
:
// (2)
List<Map<Object,Object>> myList = new ArrayList<Map<Object,Object>>();
How can I use double brace initialization (see (1)) with nested collections? My goal is to declare and initialize the data structure in a single line.
Also I would like to know if there are certain drawbacks when using double brace initialization I have to be aware of.
Avoid double brace initialization as it a) surprises your colleagues and is hard to read, b) harms performance and c) may cause problems with object equality (each object created has a unique class object).
If you're working on a code style guide this kind of trickery belongs in the don't section.
If you really want to be able to create lists and maps inline, just go ahead and create a few factory methods. Could look like this:
List l = Lists.of(
Maps.of(new Entry("foo", "bar"), new Entry("bar", "baz")),
Maps.of(new Entry("baz", "foobar"))
);
However, Vangs example shows exactly how the syntax for your example is for double brace initialization.
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