Lists.newArrayList vs new ArrayList
The guava builder saves typing the type arguments multiple times. Compare:
List<Foo<Bar, Baz>> list = Lists.newArrayList();
List<Foo<Bar, Baz>> list = new ArrayList<Foo<Bar, Baz>>();
In Java 7 it's a bit obsolete though, because you have the diamond operator:
List<Foo<Bar, Baz>> list = new ArrayList<>();
From Guava's source:
public static <E> ArrayList<E> newArrayList() {
return new ArrayList<E>();
}
All that's doing is allowing for type inference - no difference at runtime.
Add one point, overloading version of Lists.newArrayList() is more useful:
Lists.newArrayList(E... elements)
Lists.newArrayList(Iterable<? extends E> elements)
Lists.newArrayList(Iterator<? extends E> elements)
provide more useful functions than new ArrayList()
.
For example: new ArrayList()
cannot do:
Lists.newArrayList("a","b");
Lists.newArrayList(anIterable);