zoukankan      html  css  js  c++  java
  • List的初始化方式

    在LinkedIn考试考到了,很遗憾没考过,特意记录一下,下次再战!
    文章不是我写的,看到别人的总结,发在我这里自己看看

    在 Java 中几种初始化 List 的方法:

    1. 

    List<String> stringList = new LinkedList<>();
    stringList.add("a");
    stringList.add("b");
    stringList.add("c");
    

      这种方式简单粗暴好理解,比较花费代码行数,而且是各个JDK都支持的通用做法

    2. 

    List<String> stringList = new LinkedList<String>(){{
        add("a");
        add("b");
        add("c");
    }};
    

      这里定义了一个匿名的内部类,并使用 add 来初始化,虽然可以写为一行(这里并不是很重要),匿名内部类有一些效率损失,其次,如果需要把类返回给外部使用,可能产生内存泄漏。

    3.

    List<String> stringList = Arrays.asList("a", "b", "c");
    

      这里使用了 asList 的静态方法,2中提到的两个风险都能避免,但同2一样,不支持删减,这点要注意。

          另外:

    • Arrays.asList 的参数如果是基本类型的数组时,需要留意返回值可能和你预期的不同。
          
    int[] intArray = new int[]{1, 2, 3};
    Integer[] integerArray = new Integer[]{1, 2, 3};
    List<int[] > intArrayList = Arrays.asList(intArray);
    List<Integer> integerList = Arrays.asList(integerArray);
    List<Integer> integerList2 = Arrays.asList(1, 2, 3);
    

      也就是说,Arrays.asList(intArray) 返回的是 List<int> 不是 List<Integer>, 尽量使用包装类,避免使用底层数据结构。PS, {{}} 双括号语法同样可用于初始化 Map 等其他众多类型

    4.

    List<String> list = Stream.of("a", "b", "c").collect(Collectors.toList());
    

      这是 JDK8以后支持的方式,流式初始化,可以用流式处理的方法有很多,这里有点大材小用。

    5.

    List<String> list = Lists.newArrayList("a", "b", "c");
    

      这是 JDK9的初始化方式

  • 相关阅读:
    【Thymeleaf】利用status对象在th:each语法中显示index
    【Oracle】使用Regexp_like 判断varchar2,nvarchar2型字段里中值是否全由数字组成
    [轉]相機光圈
    選購數碼相機
    [轉載]找不到SQL server ODBC驱动程序的安装例程!请重新安装驱动程序
    [轉]解读GIF文件
    [轉]【经典问题】关于JS验证文本框输入只能输入半角,不让输入全角
    WebGenie
    XML和HTML常用转义字符
    PHP招聘启示
  • 原文地址:https://www.cnblogs.com/spillage/p/15185398.html
Copyright © 2011-2022 走看看