一、初始化list的三种方法
import java.util.stream.Collectors;
public static void initList() {
//方法一:构造 List 后使用 List.add 初始化
List<String> list1 = new ArrayList<String>();
list1.add("a");
list1.add("b");
//方法二:使用 {{}} 双括号语法
List<String> list2 = new ArrayList<String>() {{
add("a");
add("b");
}};
//方法三:使用 Arrays.asList
List<String> list3 = Arrays.asList("a", "b");
List<String> list31 = new ArrayList<String>(Arrays.asList("a", "b"));
//方法四:使用Stream
List<String> list4 = Stream.of("a", "b", "c").collect(Collectors.toList());
//方法五:使用 Lists
List<String> list5 = Lists.newArrayList("a", "b", "c");
}
二、lists.newarraylist()和new arraylist() 区别
List<String> list = new ArrayList<String>(); List<String> list = Lists.newArrayList();
Lists和Maps是两个工具类, Lists.newArrayList()其实和new ArrayList()几乎一模一样, 它唯一帮你做的(其实是javac帮你做的), 就是少写泛型的部分(即:自动推导尖括号里的数据类型)
源码:
另外,newArrayList这个方法有丰富的重载:
Lists.newArrayList(E... elements) Lists.newArrayList(Iterable<? extends E> elements) Lists.newArrayList(Iterator<? extends E> elements)
还有很多前缀扩展方法:
List<T> exactly = Lists.newArrayListWithCapacity(100);
List<T> approx = Lists.newArrayListWithExpectedSize(100);
这样,使得函数名变得更有可读性,一眼就看出方法的作用,new ArrayList(100)的可读性就比较差了。