Java初始化List集合的7种方式

2024-02-22 20:45:42 浏览数 (1)

  • 后端开发中经常会用到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

0 人点赞