初始化一個ArrayList的多種方式

祁山墨子發表於2022-12-03

序言

本片文章用於歸納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將資料批次新增進去,沒什麼特別的。

相關文章