Table of Contents
ToggleInitialize ArrayList in Java
初始化 ArrayList 元素不能直接用於基本類型,如 int 、 char 等,必須將基本型別其包裝成類別,才能存入集合,介紹常見的 add 、 addAll 、 doubleBrace 、 asList 等方法,了解初始化集合的不同操作和方法, Initialize ArrayList Java 使用動態陣列來存儲元素,實現可調整大小陣列的功能,本篇增加了範例,並透過單元測試來驗證產出結果。
檔案目錄
./
+- src
+- test
| +- org
| +- ruoxue
| +- java_147
| +- list
| +- arraylist
| +- InitializeArrayListTest.java
單元測試
Java Initialize ArrayList 提供初始化操作列表中的元素。
add
建立一個 ArrayList ,初始化三個元素。
@Test
public void add() {
int expectedSize = 3;
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
System.out.println(list);
assertEquals(expectedSize, list.size());
List<Integer> intList = new ArrayList<>();
intList.add(1);
intList.add(2);
intList.add(3);
System.out.println(intList);
assertEquals(expectedSize, intList.size());
}
[Apple, Banana, Cherry]
[1, 2, 3]
doubleBrace
建立一個 ArrayList ,初始化三個元素,代表建立並載入一個新的類別,對效能有不良影響。
@Test
public void doubleBrace() {
int expectedSize = 3;
List<String> list = new ArrayList<String>() {
private static final long serialVersionUID = -5948701413773974786L;
{
add("Apple");
add("Banana");
add("Cherry");
}
};
System.out.println(list);
assertEquals(expectedSize, list.size());
List<Integer> intList = new ArrayList<Integer>() {
private static final long serialVersionUID = -1238701413773974786L;
{
add(1);
add(2);
add(3);
}
};
System.out.println(intList);
assertEquals(expectedSize, intList.size());
}
[Apple, Banana, Cherry]
[1, 2, 3]
addAll
Java Initialize ArrayList 建立兩個 ArrayList ,使用給定的 List 物件,初始化三個元素。
@Test
public void addAll() {
int expectedSize = 3;
List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
List<String> result = new ArrayList<>();
result.addAll(list);
System.out.println(result);
assertEquals(expectedSize, result.size());
List<Integer> intList = Arrays.asList(1, 2, 3);
List<Integer> intResult = new ArrayList<>();
intResult.addAll(intList);
System.out.println(intResult);
assertEquals(expectedSize, intResult.size());
}
[Apple, Banana, Cherry]
[1, 2, 3]
Arrays_asList
Java Initialize ArrayList 建立一個 List ,使用 Arrats asList 初始化三個元素,為不可變的集合,若操作新增、刪除等方法,會拋出例外。
@Test
public void Arrays_asList() {
int expectedSize = 3;
List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
System.out.println(list);
assertEquals(expectedSize, list.size());
assertThatCode(() -> list.add("Grape")).isInstanceOf(UnsupportedOperationException.class);
List<Integer> intList = Arrays.asList(1, 2, 3);
System.out.println(intList);
assertEquals(expectedSize, intList.size());
assertThatCode(() -> intList.add(Integer.MAX_VALUE)).isInstanceOf(UnsupportedOperationException.class);
}
[Apple, Banana, Cherry]
[1, 2, 3]
Arrays_asList_withMutable
Java Initialize ArrayList 建立一個 ArrayList ,使用 Arrats asList 初始化三個元素,再傳入 ArrayList 建構子,建立集合,則會成為可變集合。
@Test
public void Arrays_asList_withMutable() {
int expectedSize = 3;
List<String> list = new ArrayList<>(Arrays.asList("Apple", "Banana", "Cherry"));
System.out.println(list);
assertEquals(expectedSize, list.size());
list.add("Grape");
System.out.println(list);
assertEquals(4, list.size());
List<Integer> intList = new ArrayList<>(Arrays.asList(1, 2, 3));
System.out.println(intList);
assertEquals(expectedSize, intList.size());
intList.add(Integer.MAX_VALUE);
System.out.println(intList);
assertEquals(4, intList.size());
}
[Apple, Banana, Cherry]
[Apple, Banana, Cherry, Grape]
[1, 2, 3]
[1, 2, 3, 2147483647]
InitializeArrayListTest.java
ArrayList Initialization Java 新增單元測試,驗證 Java ArrayList Initialize 是否符合預期。
package org.ruoxue.java_147.list.arraylist;
import static org.assertj.core.api.Assertions.assertThatCode;
import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.junit.Test;
public class InitializeArrayListTest {
@Test
public void add() {
int expectedSize = 3;
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
System.out.println(list);
assertEquals(expectedSize, list.size());
List<Integer> intList = new ArrayList<>();
intList.add(1);
intList.add(2);
intList.add(3);
System.out.println(intList);
assertEquals(expectedSize, intList.size());
}
@Test
public void doubleBrace() {
int expectedSize = 3;
List<String> list = new ArrayList<String>() {
private static final long serialVersionUID = -5948701413773974786L;
{
add("Apple");
add("Banana");
add("Cherry");
}
};
System.out.println(list);
assertEquals(expectedSize, list.size());
List<Integer> intList = new ArrayList<Integer>() {
private static final long serialVersionUID = -1238701413773974786L;
{
add(1);
add(2);
add(3);
}
};
System.out.println(intList);
assertEquals(expectedSize, intList.size());
}
@Test
public void addAll() {
int expectedSize = 3;
List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
List<String> result = new ArrayList<>();
result.addAll(list);
System.out.println(result);
assertEquals(expectedSize, result.size());
List<Integer> intList = Arrays.asList(1, 2, 3);
List<Integer> intResult = new ArrayList<>();
intResult.addAll(intList);
System.out.println(intResult);
assertEquals(expectedSize, intResult.size());
}
@Test
public void Arrays_asList() {
int expectedSize = 3;
List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
System.out.println(list);
assertEquals(expectedSize, list.size());
assertThatCode(() -> list.add("Grape")).isInstanceOf(UnsupportedOperationException.class);
List<Integer> intList = Arrays.asList(1, 2, 3);
System.out.println(intList);
assertEquals(expectedSize, intList.size());
assertThatCode(() -> intList.add(Integer.MAX_VALUE)).isInstanceOf(UnsupportedOperationException.class);
}
@Test
public void Arrays_asList_withMutable() {
int expectedSize = 3;
List<String> list = new ArrayList<>(Arrays.asList("Apple", "Banana", "Cherry"));
System.out.println(list);
assertEquals(expectedSize, list.size());
list.add("Grape");
System.out.println(list);
assertEquals(4, list.size());
List<Integer> intList = new ArrayList<>(Arrays.asList(1, 2, 3));
System.out.println(intList);
assertEquals(expectedSize, intList.size());
intList.add(Integer.MAX_VALUE);
System.out.println(intList);
assertEquals(4, intList.size());
}
}
心得分享
Java ArrayList Initialize 初始化集合,元素會依新增順序保持排序,自動調整其容量,是一個非同步的操作,並且以陣列索引為基礎,允許隨機訪問,ArrayList Initialization Java 提供了幾種 ArrayList 初始化的操作範例,使用單元測試驗證產出結果。