Table of Contents
ToggleJava Remove Elements From List
移除條件相符合的元素,提供幾種 ArrayList 刪除元素的方法,本篇增加了範例,並透過單元測試來驗證產出結果。
檔案目錄
./
+- src
+- test
| +- org
| +- ruoxue
| +- java_147
| +- list
| +- RemoveElementsFromListTest.java
單元測試
Remove an Element from ArrayList 移除條件相符合的元素。
removeByIndex
建立一個 ArrayList ,內有三個元素,移除索引相符合的元素。
@Test
public void removeByIndex() {
int expectedSize = 2;
String expectedValue = "Banana";
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
String removed = list.remove(1);
System.out.println(removed);
assertEquals(expectedValue, removed);
System.out.println(list);
assertEquals(expectedSize, list.size());
}
Banana
[Apple, Cherry]
removeByValue
建立一個 ArrayList ,內有三個元素,移除條件 value 相符合的元素。
@Test
public void removeByValue() {
int expectedSize = 2;
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
boolean removed = list.remove("Cherry");
System.out.println(removed);
assertTrue(removed);
System.out.println(list);
assertEquals(expectedSize, list.size());
removed = list.remove("Grape");
System.out.println(removed);
assertFalse(removed);
System.out.println(list);
assertEquals(expectedSize, list.size());
}
true
[Apple, Banana]
false
[Apple, Banana]
removeIf
建立一個 ArrayList ,內有三個元素,移除條件相符合的元素。
@Test
public void removeIf() {
int expectedSize = 2;
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
boolean removed = list.removeIf("Apple"::equals);
System.out.println(removed);
assertTrue(removed);
System.out.println(list);
assertEquals(expectedSize, list.size());
}
true
[Banana, Cherry]
iteratorRemove
建立一個 ArrayList ,內有三個元素,使用 iterator,在迴圈內移除條件相符合的元素。
@Test
public void iteratorRemove() {
int expectedSize = 2;
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
Iterator<String> it = list.iterator();
while (it.hasNext()) {
String e = it.next();
if (Objects.equal("Banana", e)) {
it.remove();
}
}
System.out.println(list);
assertEquals(expectedSize, list.size());
}
[Apple, Cherry]
listIteratorRemove
建立一個 ArrayList ,內有三個元素,使用 listIterator ,在迴圈內移除條件相符合的元素。
@Test
public void listIteratorRemove() {
int expectedSize = 2;
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
Iterator<String> it = list.listIterator();
while (it.hasNext()) {
String e = it.next();
if (Objects.equal("Banana", e)) {
it.remove();
}
}
System.out.println(list);
assertEquals(expectedSize, list.size());
}
[Apple, Cherry]
RemoveElementsFromListTest.java
Java ArrayList Remove 新增單元測試,驗證是否符合預期。
package org.ruoxue.java_147.list;
import static org.junit.Assert.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
import org.junit.Test;
import com.google.common.base.Objects;
public class RemoveElementsFromListTest {
public RemoveElementsFromListTest() {
}
@Test
public void removeByIndex() {
int expectedSize = 2;
String expectedValue = "Banana";
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
String removed = list.remove(1);
System.out.println(removed);
assertEquals(expectedValue, removed);
System.out.println(list);
assertEquals(expectedSize, list.size());
}
@Test
public void removeByValue() {
int expectedSize = 2;
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
boolean removed = list.remove("Cherry");
System.out.println(removed);
assertTrue(removed);
System.out.println(list);
assertEquals(expectedSize, list.size());
removed = list.remove("Grape");
System.out.println(removed);
assertFalse(removed);
System.out.println(list);
assertEquals(expectedSize, list.size());
}
@Test
public void removeIf() {
int expectedSize = 2;
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
boolean removed = list.removeIf("Apple"::equals);
System.out.println(removed);
assertTrue(removed);
System.out.println(list);
assertEquals(expectedSize, list.size());
}
@Test
public void iteratorRemove() {
int expectedSize = 2;
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
Iterator<String> it = list.iterator();
while (it.hasNext()) {
String e = it.next();
if (Objects.equal("Banana", e)) {
it.remove();
}
}
System.out.println(list);
assertEquals(expectedSize, list.size());
}
@Test
public void listIteratorRemove() {
int expectedSize = 2;
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
Iterator<String> it = list.listIterator();
while (it.hasNext()) {
String e = it.next();
if (Objects.equal("Banana", e)) {
it.remove();
}
}
System.out.println(list);
assertEquals(expectedSize, list.size());
}
}
心得分享
Java ArrayList Remove 提供了幾種 ArrayList 移除元素方法的操作範例,完成 Remove Elements from an ArrayList in Java 刪除元素的需求。