0

初始化一个ArrayList的多种方式 - 祁山墨子

 1 year ago
source link: https://www.cnblogs.com/qishanmozi/p/16948887.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
2022-12-03 22:05阅读: 39评论: 0推荐: 0

初始化一个ArrayList的多种方式

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

add方法添加

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

 /**
     * 第一种方式,通过add方法
     * @return
     */
    public List<String> initOne(){

        List<String> 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将数据批量添加进去,没什么特别的。

本文作者:祁山墨子

本文链接:https://www.cnblogs.com/qishanmozi/p/16948887.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @ 2022-12-03 22:05  祁山墨子  阅读(39)  评论(0)  编辑  收藏  举报

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK