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的初始化方式

  • 相关阅读:
    【win10】浏览器Chrome 和edge 体验对比与使用心得
    【Java】 VM 环境配置过程要点( win10,64位)
    office2013 激活方法
    产品激活 比如Windows激活 , office激活 等激活的原理是什么? KMS等激活工具安全吗?
    回顾外滩踩踏事件,吸取的教训
    【win7】Ubuntu安装使用中的一些注意事项
    黑屏
    mock测试(一)
    Django模型类(一)
    获取本机局域网ip和出口ip
  • 原文地址:https://www.cnblogs.com/spillage/p/15185398.html
Copyright © 2011-2022 走看看