初始化 List 的几种方法

一、初始化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)的可读性就比较差了。

三、参考

https://juejin.im/post/5bddcee3e51d4520b6639663

https://blog.csdn.net/LonelyMrFan/article/details/73526815

posted @ 2022-02-05 11:58  zeroingToOne  阅读(19043)  评论(0)    收藏  举报