Java8中引入了Stream API,它是一組用于處理集合資料的API。Stream API可以使用Lambda表達式進行操作,提供了一種函數式程式設計的方式來處理集合資料。下面介紹一些Stream API的特點和常用操作:
- 特點
流
- 延遲計算:Stream API中的操作不會立即執行,而是等到需要結果時才進行計算。
- 内部疊代:Stream API中的操作是通過内部疊代器實作的,可以自動進行疊代,無需手動控制。
- 不會修改原始資料:Stream API中的操作不會修改原始資料,而是傳回一個新的Stream對象。
- 常用操作
Stream API提供了許多常用的操作,包括過濾、映射、排序、去重、計數、分組、聚合等。以下是一些常用的操作:
- 過濾器:過濾集
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> filtered = numbers.stream()
.filter(n -> n > 2)
.collect(Collectors.toList());
// 輸出:[3, 4, 5]
System.out.println(filtered);
- 地圖:将集
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> mapped = numbers.stream()
.map(n -> n * 2)
.collect(Collectors.toList());
// 輸出:[2, 4, 6, 8, 10]
System.out.println(mapped);
- 排序:對集
List<Integer> numbers = Arrays.asList(5, 2, 4, 1, 3);
List<Integer> sorted = numbers.stream()
.sorted()
.collect(Collectors.toList());
// 輸出:[1, 2, 3, 4, 5]
System.out.println(sorted);
- Distinct:去除集合中
List<Integer> numbers = Arrays.asList(1, 2, 3, 2, 4, 3, 5);
List<Integer> distinct = numbers.stream()
.distinct()
.collect(Collectors.toList());
// 輸出:[1, 2, 3, 4, 5]
System.out.println(distinct);
- count:計算集合中的元素個數。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
long count = numbers.stream().count();
// 輸出:5
System.out.println(count);
- groupingBy:按照指定條件對集合中的元素進行分組。
List<String> words = Arrays.asList("apple", "banana", "avocado", "orange", "pear");
Map<Character, List<String>> grouped = words.stream()
.collect(Collectors.groupingBy(w -> w.charAt(0)));
// 輸出:{a=[apple, avocado], b=[banana], o=[orange], p=[pear]}
System.out.println(grouped);
- reduce:對集合中的元素進行聚合操作。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream().reduce(0, (a, b) -> a + b);
// 輸出:15
System.out.println(sum);
以上是Stream API的一些特點和常用操作,使用Stream API可以使得集合資料處理更加簡潔和靈活。