- 后端开发中经常会用到List集合
- 初始化List集合有多种方法,在此统一整理下
最常规的add方法
Arrays工具类
Collections工具类
匿名内部类
JDK8 Stream
JDK9 List.of
ImmutableList
1.常规方式
代码语言:java复制List<String> list1 = new ArrayList<>();
list1.add("money");
list1.add("study");
list1.add("health");
System.out.println("常规方法: " list1); //常规方法: [money, study, health]
平常使用最多,后面缺失的泛型类型在JDK7之后 不用写具体的类型,改进后会自动推断类型。
2.Arrays工具类
代码语言:java复制//生成的list不可变
List<String> list2 = Arrays.asList("money", "study", "health");
System.out.println("Arrays工具类: " list2); //Arrays工具类: [money, study, health]
//list2.add("happy"); //报异常 java.lang.UnsupportedOperationException
asList 是 Arrays 的静态方法,使用了静态导入,该方式添加的是不可变的 List, 即不能添加、删除等操作,需要警惕。
如果要可变,需用ArrayList再包装一下,得到可变的ArrayList。
代码语言:java复制List<String> list22 = new ArrayList<>(Arrays.asList("abc", "def", "ghi"));
list22.add("xyz");
System.out.println("Arrays工具类、ArrayList包装: " list22); //Arrays工具类、ArrayList包装: [abc, def, ghi, xyz]
3.Collections工具类
代码语言:java复制//生成的list不可变
List<String> list3 = Collections.nCopies(3, "happy");
System.out.println("Collections工具类: " list3); //Collections工具类: [happy, happy, happy]
//list3.add("happy"); //报异常 java.lang.UnsupportedOperationException
nCopies是Collections的静态方法,添加的是不可变、复制某个元素N遍的工具类。
如果要可变,需用ArrayList再包装一下,得到可变的ArrayList。
代码语言:java复制List<String> list33 = new ArrayList<>(Collections.nCopies(3, "up"));
list33.add("down");
System.out.println("Collections工具类、ArrayList包装: " list33); //Collections工具类、ArrayList包装: [up, up, up, down]
4.匿名内部类
代码语言:java复制//可变
List<String> list4 = new ArrayList<String>() {{
add("money");
add("study");
add("health");
}};
System.out.println("匿名内部类: " list4); //匿名内部类: [money, study, health]
5.JDK8 Stream
代码语言:java复制//可变
List<String> list5 = Stream.of("money", "study", "health").collect(Collectors.toList());
System.out.println("JDK8 Stream: " list5); //JDK8 Stream: [money, study, health]
Stream是JDK8推出来的新概念,比集合还要强大,也可和集合互相转换。
6.JDK9 List.of
代码语言:java复制//生成的list不可变
List<String> list6 = List.of("money", "study", "health");
//JDK9 List.of: [money, study, health]
System.out.println("JDK9 List.of: " list6);
7.ImmutableList
代码语言:java复制//生成的list不可变
List<String> list7 = ImmutableList.of("money", "study", "health");
//ImmutableList: [money, study, health]
System.out.println("ImmutableList: " list7);
参考:https://www.cnblogs.com/javastack/p/10074847.html