Java TreeSet Class - Java 147

Java TreeSet Class – Java 147

Java TreeSet Class - Java 147

根據其元素的自然順序進行排序,或者根據使用的建構子在 Set 建立時提供的比較器進行排序, TreeSet Class 介紹常見的 contains 、 stream 、 higher 、 pollFirst 等方法,本篇增加了範例,並透過單元測試來驗證產出結果。

檔案目錄

./
   +- src
       +- test
       |   +- org
       |       +- ruoxue
       |           +- java_147
       |               +- set
       |                   +- treeset
       |                       +- TreeSetClassTest.java   

單元測試

TreeSet Class Java 提供檢查是否包含鍵值、取代、轉成陣列、合併等操作 Set 中的元素。

contains

TreeSet Class Java 建立一個 TreeSet ,增加三個元素,檢查包含指定的元素。

	@Test
	public void contains() {
		Set<String> set = new TreeSet<String>();
		set.add("Longan");
		set.add("Tomato");
		set.add("Pear");

		boolean contains = set.contains("Longan");
		System.out.println(contains);
		assertTrue(contains);

		contains = set.contains("Grape");
		System.out.println(contains);
		assertFalse(contains);
	}
true
false

containsAll

TreeSet Class Java 建立一個 TreeSet ,增加三個元素,檢查是否包含值。

	@Test
	public void containsAll() {
		Set<String> set = new TreeSet<String>();
		set.add("Longan");
		set.add("Tomato");
		set.add("Pear");

		Set<String> set2 = new TreeSet<String>();
		set2.add("Longan");
		set2.add("Tomato");

		boolean contains = set.containsAll(set2);
		System.out.println(contains);
		assertTrue(contains);

		contains = set2.containsAll(set);
		System.out.println(contains);
		assertFalse(contains);
	}
true

stream

TreeSet Class Java 建立一個 TreeSet ,內有三個元素,使用串流,取得長度小於 6 的元素。

	@Test
	public void stream() {
		int expectedSize = 1;
		Set<String> set = new TreeSet<String>();
		set.add("Longan");
		set.add("Tomato");
		set.add("Pear");
		set = set.stream().filter(e -> e.length() < 6).collect(Collectors.toSet());
		System.out.println(set);
		assertEquals(expectedSize, set.size());
	}
[Pear]

parallelStream

TreeSet Class Java 建立一個 TreeSet ,內有三個元素,使用並行串流。

	@Test
	public void parallelStream() {
		Set<String> set = new TreeSet<String>();
		set.add("Longan");
		set.add("Tomato");
		set.add("Pear");
		set.parallelStream().forEach(System.out::println);
		System.out.println("----------");
		set.parallelStream().forEachOrdered(System.out::println);
	}
Pear
Tomato
Longan
----------
Longan
Pear
Tomato

replaceAll

Tree Set Class in Java 建立兩個 HashSet ,內各有三個元素,保留指定集合中包含的所有元素。

	@Test
	public void retainAll() {
		Set<String> set = new TreeSet<String>();
		set.add("Longan");
		set.add("Tomato");
		set.add("Pear");

		Set<String> set2 = new TreeSet<String>();
		set2.add("Longan");
		set2.add("Lemon");
		set2.add("Mango");

		boolean result = set.retainAll(set2);
		System.out.println(result);
		System.out.println(set);
		assertTrue(result);

		result = set.retainAll(set2);
		System.out.println(result);
		System.out.println(set);
		assertFalse(result);
	}
true
[Longan]
false
[Longan]

higher

Tree Set Class in Java 建立一個 TreeSet ,內有三個元素,取得大於指定元素的元素。

	@Test
	public void higher() {
		NavigableSet<String> set = new TreeSet<String>();
		set.add("Longan");
		set.add("Tomato");
		set.add("Pear");
		String result = set.higher("Pear");
		System.out.println(result);
		assertEquals("Tomato", result);
	}
Tomato

lower

Tree Set Class in Java 建立一個 TreeSet ,內有三個元素,取得小於指定元素的元素。

	@Test
	public void lower() {
		NavigableSet<String> set = new TreeSet<String>();
		set.add("Longan");
		set.add("Tomato");
		set.add("Pear");
		String result = set.lower("Pear");
		System.out.println(result);
		assertEquals("Longan", result);
	}
Longan

pollFirst

Java TreeSet Class Example 建立一個 TreeSet ,內有三個元素,取得第一個元素並從集合中移除。

	@Test
	public void pollFirst() {
		int expectedSize = 2;
		NavigableSet<String> set = new TreeSet<String>();
		set.add("Longan");
		set.add("Tomato");
		set.add("Pear");
		String result = set.pollFirst();
		System.out.println(result);
		System.out.println(set);
		assertEquals("Longan", result);
		assertEquals(expectedSize, set.size());
	}
Longan
[Pear, Tomato]

pollLast

Java TreeSet Class Example 建立一個 TreeSet ,內有三個元素,取得最後一個元素並從集合中移除。

	@Test
	public void pollLast() {
		int expectedSize = 2;
		NavigableSet<String> set = new TreeSet<String>();
		set.add("Longan");
		set.add("Tomato");
		set.add("Pear");
		String result = set.pollLast();
		System.out.println(result);
		System.out.println(set);
		assertEquals("Tomato", result);
		assertEquals(expectedSize, set.size());
	}
Tomato
[Longan, Pear]

TreeSetClassTest.java

Tree Set Class in Java 新增單元測試,驗證是否符合預期。

package org.ruoxue.java_147.set.treeset;

import static org.junit.Assert.*;

import java.util.TreeSet;
import java.util.NavigableSet;
import java.util.Set;
import java.util.stream.Collectors;

import org.junit.Test;

public class TreeSetClassTest {

	@Test
	public void contains() {
		Set<String> set = new TreeSet<String>();
		set.add("Longan");
		set.add("Tomato");
		set.add("Pear");

		boolean contains = set.contains("Longan");
		System.out.println(contains);
		assertTrue(contains);

		contains = set.contains("Grape");
		System.out.println(contains);
		assertFalse(contains);
	}

	@Test
	public void containsAll() {
		Set<String> set = new TreeSet<String>();
		set.add("Longan");
		set.add("Tomato");
		set.add("Pear");

		Set<String> set2 = new TreeSet<String>();
		set2.add("Longan");
		set2.add("Tomato");

		boolean contains = set.containsAll(set2);
		System.out.println(contains);
		assertTrue(contains);

		contains = set2.containsAll(set);
		System.out.println(contains);
		assertFalse(contains);
	}

	@Test
	public void stream() {
		int expectedSize = 1;
		Set<String> set = new TreeSet<String>();
		set.add("Longan");
		set.add("Tomato");
		set.add("Pear");
		set = set.stream().filter(e -> e.length() < 6).collect(Collectors.toSet());
		System.out.println(set);
		assertEquals(expectedSize, set.size());
	}

	@Test
	public void parallelStream() {
		Set<String> set = new TreeSet<String>();
		set.add("Longan");
		set.add("Tomato");
		set.add("Pear");
		set.parallelStream().forEach(System.out::println);
		System.out.println("----------");
		set.parallelStream().forEachOrdered(System.out::println);
	}

	@Test
	public void retainAll() {
		Set<String> set = new TreeSet<String>();
		set.add("Longan");
		set.add("Tomato");
		set.add("Pear");

		Set<String> set2 = new TreeSet<String>();
		set2.add("Longan");
		set2.add("Lemon");
		set2.add("Mango");

		boolean result = set.retainAll(set2);
		System.out.println(result);
		System.out.println(set);
		assertTrue(result);

		result = set.retainAll(set2);
		System.out.println(result);
		System.out.println(set);
		assertFalse(result);
	}

	@Test
	public void higher() {
		NavigableSet<String> set = new TreeSet<String>();
		set.add("Longan");
		set.add("Tomato");
		set.add("Pear");
		String result = set.higher("Pear");
		System.out.println(result);
		assertEquals("Tomato", result);
	}

	@Test
	public void lower() {
		NavigableSet<String> set = new TreeSet<String>();
		set.add("Longan");
		set.add("Tomato");
		set.add("Pear");
		String result = set.lower("Pear");
		System.out.println(result);
		assertEquals("Longan", result);
	}

	@Test
	public void pollFirst() {
		int expectedSize = 2;
		NavigableSet<String> set = new TreeSet<String>();
		set.add("Longan");
		set.add("Tomato");
		set.add("Pear");
		String result = set.pollFirst();
		System.out.println(result);
		System.out.println(set);
		assertEquals("Longan", result);
		assertEquals(expectedSize, set.size());
	}

	@Test
	public void pollLast() {
		int expectedSize = 2;
		NavigableSet<String> set = new TreeSet<String>();
		set.add("Longan");
		set.add("Tomato");
		set.add("Pear");
		String result = set.pollLast();
		System.out.println(result);
		System.out.println(set);
		assertEquals("Tomato", result);
		assertEquals(expectedSize, set.size());
	}
}

心得分享

Java TreeSet Class Example 提供了一個有序集合,其中的元素是根據它們的自然順序,或傳遞給建構子的自定義比較器進行排序, Tree Set Class in Java 提供 contains 、 stream 、 higher 、 pollFirst 等操作範例。

發佈留言