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