• 初始化一个ArrayList的多种方式


    序言

    本片文章用于归纳java中初始化一个ArrayList的几种方式

    add方法添加

    最基础的方式就是我们在new一个ArrayList之后使用add方法添加元素

     /**
         * 第一种方式,通过add方法
         * @return
         */
        public List initOne(){
    
            List list = new ArrayList<>();
            list.add("1");
            list.add("2");
            
            return list;
        }
    

    使用Arrays.asList()方法添加

     /**
         * 第二种方式,通过Arrays.asList方法
         * @return
         */
        public List<String> initTwo(){
    
            List<String> list = Arrays.asList("1", "2", "3");
    
            return list;
        }
    

    java的java.util.Arrays工具类中为我们提供了一个asList方法用于让我们方便的初始化一个简易的集合对象,该方法在jdk1.2版本加入到java当中。不过要注意的是,这个方法返回的ArrayList,并不是java.util.ArrayList,而是Arrays里面独立实现的一个内部类,继承了AbstractAbstractList.完整包名为java.util.Arrays.ArrayList,该类并不支持remove以及add方法。我们在使用的时候注意这一点

    使用双括号初始化

      /**
         * 第三种方式,双括号初始化
         * @return
         */
        public List<String> initThree(){
            List<String> list = new ArrayList<String>() {{
                add("1");
                add("2");
            }};
            return list;
        }
    

    这种方式本质上是创建了一个继承了ArrayList的匿名内部类,并且在这个内部类中使用代码块对这个ArrayList进行了初始化。要注意的时候使用这种方式初始化的ArrayList,无法被序列化。

    使用Stream进行初始化

        /**
         * 第四种方式使用Stream初始化
         * @return
         */
        public List<String> initFour(){
            List<String> collect = Stream.of("1", "2", "3").collect(Collectors.toList());
            return collect;
        }
    

    这种使用的jdk1.8之后的stream流处理来生成一个List,如果你想要在生成list的时候顺便对其进行一些处理,那么推荐使用这种方式来生成,但是如果只是单纯的初始化,那么不推荐,这种方式相对于基础的初始化方式,有去做了一个流的初始工作,所以单纯的初始化时效率会低上一些。

    使用Lists工具类来初始化

      /**
         * 使用Lists工具类来初始化
         * @return
         */
        public List<String> initFive(){
            ArrayList<String> strings = Lists.newArrayList("1", "2", "3");
            return strings;
        }
    

    这个Lists时google封装的一个工具类。这种方式其实本质上还是声明一个ArrayList并用Collections将数据批量添加进去,没什么特别的。

  • 相关阅读:
    常见的Transforms(一)Compose & Normalize
    rk3568适配温控风扇
    shopee商品链接获取shopee商品评论数据(用 Python实现shopee商品评论信息抓取)
    php eayswoole node axios crypto-js 实现大文件分片上传复盘
    JPA Native Query(本地查询)及查询结果转换
    Kafka 集群实现数据同步
    Deadlock found when trying to get lock; try restarting transaction主要要是死锁问题呢怎么解决
    软件定义汽车的关键—车载操作系统
    如何使用jenkins、ant、selenium、testng搭建自动化测试框架
    数据结构--队列与循环队列的实现
  • 原文地址:https://www.cnblogs.com/qishanmozi/p/16948887.html