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