前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java初始化List集合的7种方式

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

原创
作者头像
AmbitionResponsibility
发布2024-02-22 20:45:42
2050
发布2024-02-22 20:45:42
举报
文章被收录于专栏:Java 后端开发Java 后端开发
  • 后端开发中经常会用到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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档