Java Remove Elements From List - Java 147

Java Remove Elements From List – Java 147

Java 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 刪除元素的需求。

發佈留言