Java如何從集合和數(shù)組獲取Stream流的方法
Java從集合和數(shù)組獲取Stream流
在 Java 的編程過程中,Stream 流是處理集合、數(shù)組等數(shù)據(jù)結構的重要工具,它提供了高效且簡潔的操作方式。
本文將詳細介紹如何從集合、數(shù)組等數(shù)據(jù)結構中獲取 Stream 流。
1. 從集合獲取 Stream
Java 的 Collection 接口為我們提供了直接獲取 Stream 的方法:
方法
stream():獲取一個順序流。parallelStream():獲取一個并行流。
示例代碼
import java.util.*;
import java.util.stream.*;
public class Main {
public static void main(String[] args) {
// 創(chuàng)建集合
List<String> list = Arrays.asList("A", "B", "C");
// 獲取順序流
Stream<String> stream = list.stream();
stream.forEach(System.out::println);
// 獲取并行流
Stream<String> parallelStream = list.parallelStream();
parallelStream.forEach(System.out::println);
}
}輸出結果:
A
B
C
2. 從數(shù)組獲取 Stream
Arrays 類提供了靜態(tài)方法 stream() 用于從數(shù)組生成流。
方法
Arrays.stream(T[] array):將整個數(shù)組轉換為順序流。Arrays.stream(T[] array, int startInclusive, int endExclusive):將數(shù)組的部分范圍轉換為流。
示例代碼
import java.util.*;
import java.util.stream.*;
public class Main {
public static void main(String[] args) {
// 創(chuàng)建數(shù)組
String[] array = { "A", "B", "C", "D" };
// 將整個數(shù)組轉換為流
Stream<String> stream = Arrays.stream(array);
stream.forEach(System.out::println);
// 將數(shù)組部分范圍轉換為流
Stream<String> partialStream = Arrays.stream(array, 1, 3);
partialStream.forEach(System.out::println); // 輸出 B, C
}
}輸出結果:
A
B
C
D
B
C
3. 使用 Stream.of 獲取流
Stream 接口提供了靜態(tài)方法 Stream.of(),可以直接從元素或數(shù)組生成流。
示例代碼
import java.util.stream.*;
public class Main {
public static void main(String[] args) {
// 使用 Stream.of 從元素生成流
Stream<String> stream = Stream.of("A", "B", "C");
stream.forEach(System.out::println);
// 使用 Stream.of 從數(shù)組生成流
String[] array = { "X", "Y", "Z" };
Stream<String> arrayStream = Stream.of(array);
arrayStream.forEach(System.out::println);
}
}輸出結果:
A
B
C
X
Y
Z
4. 從基本類型數(shù)組獲取 Stream
對于基本類型數(shù)組(如 int[]、double[]),可以使用專門的流方法來生成流。
方法
IntStream.of(int... values)DoubleStream.of(double... values)Arrays.stream(int[] array)
示例代碼
import java.util.stream.*;
public class Main {
public static void main(String[] args) {
// 使用 IntStream.of
IntStream intStream = IntStream.of(1, 2, 3, 4);
intStream.forEach(System.out::println);
// 使用 Arrays.stream
int[] intArray = { 5, 6, 7, 8 };
IntStream arrayStream = Arrays.stream(intArray);
arrayStream.forEach(System.out::println);
}
}輸出結果:
1
2
3
4
5
6
7
8
5. 從 Map 獲取 Stream
Map 不屬于 Collection 接口的子類,因此不能直接調用 stream() 方法。
我們可以通過 entrySet()、keySet() 或 values() 間接獲取流。
示例代碼
import java.util.*;
import java.util.stream.*;
public class Main {
public static void main(String[] args) {
// 創(chuàng)建 Map
Map<String, Integer> map = new HashMap<>();
map.put("A", 1);
map.put("B", 2);
map.put("C", 3);
// 獲取鍵流
Stream<String> keyStream = map.keySet().stream();
keyStream.forEach(System.out::println);
// 獲取值流
Stream<Integer> valueStream = map.values().stream();
valueStream.forEach(System.out::println);
// 獲取鍵值對流
Stream<Map.Entry<String, Integer>> entryStream = map.entrySet().stream();
entryStream.forEach(entry -> System.out.println(entry.getKey() + ": " + entry.getValue()));
}
}輸出結果:
A
B
C
1
2
3
A: 1
B: 2
C: 3
總結
| 數(shù)據(jù)類型 | 方法 |
|---|---|
| 集合 | stream() 或 parallelStream() |
| 數(shù)組 | Arrays.stream() 或 Stream.of() |
| 基本類型數(shù)組 | IntStream.of() 或 Arrays.stream() |
| Map | 使用 entrySet()、keySet()、values() |
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Nacos客戶端配置中心緩存動態(tài)更新實現(xiàn)源碼
這篇文章主要為大家介紹了Nacos客戶端配置中心緩存動態(tài)更新實現(xiàn)源碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪2022-03-03
Java中StringBuilder字符串類型的操作方法及API整理
Java中的StringBuffer類繼承于AbstractStringBuilder,用來創(chuàng)建非線程安全的字符串類型對象,下面即是對Java中StringBuilder字符串類型的操作方法及API整理2016-05-05
java 數(shù)據(jù)結構 冒泡排序實現(xiàn)代碼
這篇文章主要介紹了java 數(shù)據(jù)結構 冒泡排序的相關資料,并附實例代碼,有需要的小伙伴可以參考下2016-09-09
SpringBoot?整合MyBatis+MyBatis-Plus+MyBatisX插件使用
本文主要介紹了SpringBoot?整合MyBatis+MyBatis-Plus+MyBatisX插件使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-04-04
SpringBoot創(chuàng)建動態(tài)定時任務的幾種方式小結
SpringBoot提供了多種實現(xiàn)定時任務的方式,包括使用@Scheduled注解、SchedulingConfigurer接口、TaskScheduler接口和Quartz框架,@Scheduled適合簡單的定時任務,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下2024-10-10

