Especially in unit test, it is common case that we have to initialize an array or a collection.
Well, for array, it’s OK… A simple code that we know can solve the problem:
String[] s = new String [] {"1", "2"};
But how about Collection? Normal way to initialize collection is something like this (which pretty ugly):
List<String> s = new ArrayList<String>(); s.add("1"); s.add("2");
I hardly find an elegant solution until I see this post. There are at least three better solution for the case.
First solution:
List<String> s = new ArrayList<String>() {{ add("1"); add("2"); }};
Which unfortunately, doesn’t pass Java Code Convention (that is, if you format the code, it will become uglier than the original).
List<String> s = new ArrayList<String>() { { add("1"); add("2"); } };
Second solution:
List<String> s = Arrays.asList(new String[]{"1", "2"});
This solution is the best if you use Java 1.4 or before. But if you use Java 5, the third is more elegant:
List<String> s = Arrays.asList("1", "2");
Great!
EDIT: this solution will create a fixed size BUT modifiable collection, so you may want to wrap it with ArrayList (or other Collection class) to make it writable.