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

  • 后端开发中经常会用到List集合

  • 初始化List集合有多种方法,在此统一整理下

    • 最常规的add方法

    • Arrays工具类

    • Collections工具类

    • 匿名内部类

    • JDK8 Stream

    • JDK9 List.of

    • ImmutableList

1.常规方式

List<String> list1 = new ArrayList<>();
list1.add("money");
list1.add("study");
list1.add("health");
System.out.println("常规方法:  " + list1); //常规方法:  [money, study, health]

平常使用最多,后面缺失的泛型类型在JDK7之后 不用写具体的类型,改进后会自动推断类型。

2.Arrays工具类

//生成的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。

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工具类

//生成的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。

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.匿名内部类

//可变
List<String> list4 = new ArrayList<String>() {{
    add("money");
    add("study");
    add("health");
}};
System.out.println("匿名内部类:  " + list4); //匿名内部类:  [money, study, health]

5.JDK8 Stream

//可变
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

//生成的list不可变
List<String> list6 = List.of("money", "study", "health");
//JDK9 List.of:  [money, study, health]
System.out.println("JDK9 List.of:  " + list6);

7.ImmutableList

//生成的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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值