文章目录
快速生成list: Java快速创建List常用几种方式_旷野历程的博客-CSDN博客_java 快速创建list
由其中的匿名内部类方式创建引发了对匿名类的好奇:
List<Integer> list= new ArrayList() {{
add(1);
add(2);
add(3);
}};
匿名类的定义:实现一个类且不需要提供任何的类名直接实例化。
匿名类通常继承一个父类或实现一个接口。(因此私有属性,通过匿名类是没法直接使用的)
使用双括号进行list初始化的解释:匿名内部类的写法以及注意点 - CSDN
//新建hashmap的初始化也可以使用双大括号
Map map = new HashMap(){{
put("Name", "Unmi");
put("QQ", "1125535");
}}
理解:第一层括号理解成定义了一个继承于该实现类的匿名类,第二层理解为初始化块。
注意:这种方法一定程度上使代码更简洁,但同时可能降低可读性;还可能会造成内存泄露,在序列化时可能也会出现一些问题(未测试)
当我们想构造一个数组列表,并将它传递到一个方法时,最初的写法如下:
ArrayList friends=new ArrayList<>();
friends.add(“tom”);
friends.add(“lin”);
invite(friends);
//不写数组列表,将其作为一个匿名列表,通过双括号的方式为列表添加元素,这样代码更为简洁。
invite(new ArrayList(){{
add("tom");
add("lin");
}});
快速生成list的方式
1、常规操作 new ArrayList<>() 创建
List list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
2、Arrays工具类创建
List list = Arrays.asList(1, 2, 3);
Arrays.asList() 方法是 Arrays 的静态方法。这种方式构造的 List 是固定长度的,如果调用 add 方法增加新的元素时会报异常 java.lang.UnsupportedOperationException。这种方式仅适用于构造静态不变的 List。
如果想要改变可以通过 ArrayLis t进行包装成动态。
List list = Arrays.asList(1, 2, 3);
list = new ArrayList<>(list);
list.add(4);
3、Stream创建
List list = Stream.of(1, 2, 3).collect(Collectors.toList());
4、匿名内部类创建
List list= new ArrayList() {{
add(1);
add(2);
add(3);
}};
5、Hutool工具类创建
List list = CollectionUtil.newArrayList(1, 2, 3);
6、guava工具类创建
import com.google.common.collect.Lists;
List list = Lists.newArrayList(1, 2, 3);
7、JDK9 引入的Lists创建
List list = Lists.newArrayList(1, 2, 3);
8、JDK9引入 List.of (不可变)
List list = List.of(1,2,3);