天天看點

Java8中的Stream API

作者:知識鋪

Java8中引入了Stream API,它是一組用于處理集合資料的API。Stream API可以使用Lambda表達式進行操作,提供了一種函數式程式設計的方式來處理集合資料。下面介紹一些Stream API的特點和常用操作:

  1. 特點

  • 延遲計算:Stream API中的操作不會立即執行,而是等到需要結果時才進行計算。
  • 内部疊代:Stream API中的操作是通過内部疊代器實作的,可以自動進行疊代,無需手動控制。
  • 不會修改原始資料:Stream API中的操作不會修改原始資料,而是傳回一個新的Stream對象。
  1. 常用操作

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可以使得集合資料處理更加簡潔和靈活。