Java的ArrayList是一種動態陣列,也就是說,它的大小是可以改變的。它繼承了Java的AbstractList類別,並實現了List介面。ArrayList可以存儲任何類型的資料,並且可以動態地增加和減少其大小。
初始化ArrayList可以有以下幾種方法:
使用add()
java
雙括號初始化(Double Brace Initialization)
java
這段代碼的實際效果是創建了一個匿名內部類(Anonymous Inner Class)繼承自
ArrayList<String>
,並且在這個匿名內部類的實例初始化塊(Instance Initializer Block)中添加了幾個元素。- 內部類與實例初始化塊:
- 外層大括號
{}
定義了一個匿名內部類,它繼承自ArrayList<String>
。 - 內層大括號
{}
是一個實例初始化塊。這個初始化塊會在類實例化時執行,這裡面包含了對ArrayList
的幾次add
操作,用於向集合中添加元素。
優點 | 缺點 |
這種寫法能夠在一行中完成集合的宣告與初始化,並且能夠立即對集合進行操作,相對簡潔。 | 這種寫法會創建一個匿名內部類,增加了記憶體消耗,並且在使用反序列化時可能會引發問題。因此,不推薦在性能關鍵的代碼中使用。 |
使用asList()
java
- 初始化:
Arrays.asList("Alan", "Bill", "Mary")
:這行代碼創建了一個由Arrays.asList
方法返回的固定大小的列表(List
),該列表包含了給定的元素。new ArrayList<>(...)
:這行代碼將固定大小的列表轉換為一個可變大小的ArrayList
。
Arrays.asList()
方法:Arrays.asList()
方法返回一個基於指定數組的固定大小的列表。這個列表本質上是數組的視圖,因此它不支持添加或移除元素的操作。
- 轉換為
ArrayList
: - 由於我們需要一個可變大小的列表,我們將
Arrays.asList()
返回的列表傳遞給ArrayList
的構造函數,創建了一個新的ArrayList
實例,該實例是可變的。
優點 | 缺點 |
1. 簡潔:使用 Arrays.asList() 進行初始化非常簡潔,能夠在一行代碼中完成集合的初始化。
2. 可讀性高:這種方法易於閱讀和理解,適合用於初始化小型集合。
3. 性能:相比於雙括號初始化,這種方法不會創建匿名內部類,因此在內存開銷和性能方面更優。 | 1. 固定大小的問題: Arrays.asList() 返回的列表是固定大小的,不能直接添加或移除元素。因此,我們需要將其轉換為可變大小的ArrayList ,這可能會帶來一些額外的內存開銷。
2. 靈活性:相比於使用標準的集合初始化方法,這種方法在初始化包含更複雜邏輯的集合時可能不夠靈活。 |
總結
使用
Arrays.asList()
來初始化ArrayList
是一種簡潔且高效的方式,特別適合用於初始化元素數量較少且不需要額外初始化邏輯的集合。相較於雙括號初始化,這種方法在性能和內存使用方面有一定優勢,但需要注意轉換成ArrayList
以確保集合的可變性。參考
- 作者:JK Yang
- 链接:https://jk1124.netlify.app/article/b6452a05-84ff-4db9-8d08-f7a6ba21e5d9
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。