Table of Contents
ToggleJava Primitive Type Stream
提供基本型別轉換成 Primitive Stream ,支援 int 、 long 、 double 、 array 等,可以避免大量不必要的物件建立,本篇增加了範例,並透過單元測試來驗證產出結果。
檔案目錄
./
+- src
+- test
| +- org
| +- ruoxue
| +- java_147
| +- stream
| +- PrimitiveTypeStreamsTest.java
單元測試
Primitive Type Streams API 是 Java 8 中增加的特性之一,允許通過提供聲明性 API 來方便且更有效地處理集合和其他元素序列。
intStreamOf
建立一個 IntStream,增加三個元素。
@Test
public void intStreamOf() {
int expectedCount = 3;
IntStream stream = IntStream.of(1, 2, 3);
// stream.forEach(System.out::println);
long count = stream.peek(System.out::println).count();
assertEquals(expectedCount, count);
}
1
2
3
intStreamRange
建立一個 IntStream,增加範圍內三個元素。
@Test
public void intStreamRange() {
int expectedCount = 3;
IntStream stream = IntStream.range(1, 4);
// stream.forEach(System.out::println);
long count = stream.peek(System.out::println).count();
assertEquals(expectedCount, count);
}
1
2
3
intStreamRangeClosed
Primitive Type Streams 建立一個 IntStream,增加包含範圍共四個元素。
@Test
public void intStreamRangeClosed() {
int expectedCount = 4;
IntStream stream = IntStream.rangeClosed(1, 4);
// stream.forEach(System.out::println);
long count = stream.peek(System.out::println).count();
assertEquals(expectedCount, count);
}
1
2
3
4
longStreamOf
Primitive Type Streams 建立一個 LongStream,增加三個元素。
@Test
public void longStreamOf() {
int expectedCount = 3;
LongStream stream = LongStream.of(4, 5, 6);
// stream.forEach(System.out::println);
long count = stream.peek(System.out::println).count();
assertEquals(expectedCount, count);
}
4
5
6
longStreamRange
Primitive Type Streams 建立一個 LongStream,增加範圍內三個元素。
@Test
public void longStreamRange() {
int expectedCount = 3;
LongStream stream = LongStream.range(4, 7);
// stream.forEach(System.out::println);
long count = stream.peek(System.out::println).count();
assertEquals(expectedCount, count);
}
4
5
6
longStreamRangeClosed
建立一個 LongStream,增加包含範圍共四個元素。
@Test
public void longStreamRangeClosed() {
int expectedCount = 4;
LongStream stream = LongStream.rangeClosed(4, 7);
// stream.forEach(System.out::println);
long count = stream.peek(System.out::println).count();
assertEquals(expectedCount, count);
}
4
5
6
7
doubleStreamOf
建立一個 DoubleStream,增加三個元素。
@Test
public void doubleStreamOf() {
int expectedCount = 3;
DoubleStream stream = DoubleStream.of(7.0, 8.0, 9.0);
// stream.forEach(System.out::println);
long count = stream.peek(System.out::println).count();
assertEquals(expectedCount, count);
}
7.0
8.0
9.0
arraysIntStream
使用 Arrays.stream 將 int[] 轉成 IntStream,內有三個元素。
@Test
public void arraysIntStream() {
int expectedCount = 3;
IntStream stream = Arrays.stream(new int[] { 1, 2, 3 });
// stream.forEach(System.out::println);
long count = stream.peek(System.out::println).count();
assertEquals(expectedCount, count);
}
1
2
3
arraysLongStream
使用 Arrays.stream 將 long[] 轉成 LongStream,內有三個元素。
@Test
public void arraysLongStream() {
int expectedCount = 3;
LongStream stream = Arrays.stream(new long[] { 4, 5, 6 });
// stream.forEach(System.out::println);
long count = stream.peek(System.out::println).count();
assertEquals(expectedCount, count);
}
4
5
6
arraysDoubleStream
使用 Arrays.stream 將 double[] 轉成 DoubleStream,內有三個元素。
@Test
public void arraysDoubleStream() {
int expectedCount = 3;
DoubleStream stream = Arrays.stream(new double[] { 7.0, 8.0, 9.0 });
// stream.forEach(System.out::println);
long count = stream.peek(System.out::println).count();
assertEquals(expectedCount, count);
}
7.0
8.0
9.0
PrimitiveTypeStreamsTest.java
Java Streams with Primitive Type 新增單元測試,驗證是否符合預期 。
package org.ruoxue.java_147.stream;
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import java.util.stream.DoubleStream;
import java.util.stream.IntStream;
import java.util.stream.LongStream;
import org.junit.Test;
public class PrimitiveTypeStreamsTest {
@Test
public void intStreamOf() {
int expectedCount = 3;
IntStream stream = IntStream.of(1, 2, 3);
// stream.forEach(System.out::println);
long count = stream.peek(System.out::println).count();
assertEquals(expectedCount, count);
}
@Test
public void intStreamRange() {
int expectedCount = 3;
IntStream stream = IntStream.range(1, 4);
// stream.forEach(System.out::println);
long count = stream.peek(System.out::println).count();
assertEquals(expectedCount, count);
}
@Test
public void intStreamRangeClosed() {
int expectedCount = 4;
IntStream stream = IntStream.rangeClosed(1, 4);
// stream.forEach(System.out::println);
long count = stream.peek(System.out::println).count();
assertEquals(expectedCount, count);
}
@Test
public void longStreamOf() {
int expectedCount = 3;
LongStream stream = LongStream.of(4, 5, 6);
// stream.forEach(System.out::println);
long count = stream.peek(System.out::println).count();
assertEquals(expectedCount, count);
}
@Test
public void longStreamRange() {
int expectedCount = 3;
LongStream stream = LongStream.range(4, 7);
// stream.forEach(System.out::println);
long count = stream.peek(System.out::println).count();
assertEquals(expectedCount, count);
}
@Test
public void longStreamRangeClosed() {
int expectedCount = 4;
LongStream stream = LongStream.rangeClosed(4, 7);
// stream.forEach(System.out::println);
long count = stream.peek(System.out::println).count();
assertEquals(expectedCount, count);
}
@Test
public void doubleStreamOf() {
int expectedCount = 3;
DoubleStream stream = DoubleStream.of(7.0, 8.0, 9.0);
// stream.forEach(System.out::println);
long count = stream.peek(System.out::println).count();
assertEquals(expectedCount, count);
}
@Test
public void arraysIntStream() {
int expectedCount = 3;
IntStream stream = Arrays.stream(new int[] { 1, 2, 3 });
// stream.forEach(System.out::println);
long count = stream.peek(System.out::println).count();
assertEquals(expectedCount, count);
}
@Test
public void arraysLongStream() {
int expectedCount = 3;
LongStream stream = Arrays.stream(new long[] { 4, 5, 6 });
// stream.forEach(System.out::println);
long count = stream.peek(System.out::println).count();
assertEquals(expectedCount, count);
}
@Test
public void arraysDoubleStream() {
int expectedCount = 3;
DoubleStream stream = Arrays.stream(new double[] { 7.0, 8.0, 9.0 });
// stream.forEach(System.out::println);
long count = stream.peek(System.out::println).count();
assertEquals(expectedCount, count);
}
}
心得分享
Java Streams with Primitive Type 提供了 3 種 基本型別 Stream ,從 int 、 long 、 double 或從 int[] 、 long[] 、 double[] 陣列轉成 Stream, Primitive Type Streams in Java with Examples 透過單元測試,驗證了各種基本類型的轉換。