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

Java初始化List的6种方式

原创
作者头像
诺浅
修改2020-08-21 17:46:41
3.6K0
修改2020-08-21 17:46:41
举报
文章被收录于专栏:工具使用工具使用

一、常规方式

这种就是我们平常用的最多最平常的方式了,没什么好说的,后面缺失的泛型类型在 JDK 7 之后就可以不用写具体的类型了,改进后会自动推断类型。

代码语言:txt
复制
List<String> languages = new ArrayList<>();
languages.add("Java");
languages.add("PHP");
languages.add("Python");
System.out.println(languages);

二、Arrays工具类

这种方式添加的是不可变的 List, 即不能添加、删除等操作,需要警惕.

代码语言:txt
复制
List<String> jdks = asList("JDK6", "JDK8", "JDK10");
System.out.println(jdks);

如果要可变,那就使用 ArrayList 再包装一下,如下面所示。

代码语言:txt
复制
List<String> numbers = new ArrayList<>(Arrays.asList("1", "2", "3"));
numbers.add("4");
System.out.println(numbers);

三、Collections 工具类

代码语言:txt
复制
List<String> apples = Collections.nCopies(3, "apple");
System.out.println(apples);

这种方式添加的是不可变的、复制某个元素N遍的工具类,以上程序输出:

代码语言:txt
复制
[apple, apple, apple]

老规则,如果要可变,使用 ArrayList 包装一遍。

代码语言:txt
复制
List<String> dogs = new ArrayList<>(Collections.nCopies(3, "dog"));
dogs.add("dog");
System.out.println(dogs);

还有初始化单个对象的 List 工具类,这种方式也是不可变的,集合内只能有一个元素,用得很少。

代码语言:txt
复制
List<String> cat = Collections.singletonList("cat");
System.out.println(cat);

还有一个创建空 List 的工具类,没有默认容量,节省空间

代码语言:txt
复制
List<String> cat = Collections.emptyList("cat");

四、匿名内部类

这种使用了匿名内部类的方式,可以在创建list的时候指定内部对象,可以让代码变的简洁一点。

代码语言:txt
复制
List<String> names = new ArrayList<>() {{
    add("Tom");
    add("Sally");
    add("John");
}};
System.out.println(names);

这里的双括号”{{}}”到底什么意思,什么用法呢?第一层括弧实际是定义了一个匿名内部类 (Anonymous Inner Class),第二层括弧实际上是一个实例初始化块 (instance initializer block),这个块在内部匿名类构造时被执行。在java中,很多结构新建的时候都可以采用这种方式,比如新建HashMap的时候指定初始值

代码语言:txt
复制
HashMap<String, String> map = new HashMap<String, String>() {
    {
        map.put("name", "test");  
        map.put("age", "20"); 
    }
};

五、JDK8 Stream

Stream 是 JDK 8 推出来的新概念,比集合还要更强大,还可以和集合互相转换。

代码语言:txt
复制
List<String> colors = Stream.of("1", "4", "2").collect(Collectors.toList());
System.out.println(colors);

六、JDK 9 List.of

这是 JDK 9 里面新增的 List 接口里面的静态方法,同样也是不可变的。

代码语言:txt
复制
List<String> cups = List.of("A", "B", "C");
System.out.println(cups);

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、常规方式
  • 二、Arrays工具类
  • 三、Collections 工具类
  • 四、匿名内部类
  • 五、JDK8 Stream
  • 六、JDK 9 List.of
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档