filter
//stream流中的filter
//filter 方法用于通過設置的條件過濾出元素。以下代碼片段使用 filter 方法過濾掉空字符串:
List<String> filter = Arrays.asList("mz", "", "mz55", "m", "MZ");
Stream<String> stringStream = filter.stream().filter(item -> !item.isEmpty());
stringStream.forEach(item -> {stringBuilder1.append(item).append(",");
});
System.out.println(stringBuilder1);
//mz,mz55,m,MZ
map
//stream流中的map
//map 方法用于映射每個元素到對應的結果,以下代碼片段使用 map 輸出了元素對應的平方數:
List<Integer> map = Arrays.asList(3, 2, 2, 3, 7, 3, 5);
StringBuilder stringBuilder = new StringBuilder();
Stream<Integer> integerStream = map.stream().map(i -> i * i);
integerStream.forEach(item -> {stringBuilder.append(item).append(",");
});
System.out.println(stringBuilder);
//9,4,4,9,49,9,25,
limit/skip
//limit/skip
//imit 返回 Stream 的前面n 個元素;skip 則是扔掉前n個元素。以下代碼片段使用limit 方法保留4個元素:
List<Integer> limit = Arrays.asList(3, 2, 2, 3, 7, 3, 5);
StringBuilder stringBuilder2 = new StringBuilder();
Stream<Integer> limit1 = limit.stream().limit(4);
limit1.forEach(item ->{stringBuilder2.append(item).append(",");
});
System.err.println(stringBuilder2);
//3,2,2,3,
sorted
//sorted
//sorted 方法用于對流進行排序。以下代碼片段使用 sorted 方法進行排序:
List<Integer> sorted = Arrays.asList(3, 2, 2, 3, 7, 3, 5);
StringBuilder stringBuilder3 = new StringBuilder();
Stream<Integer> sorted1 = sorted.stream().sorted();
sorted1.forEach(item -> {stringBuilder3.append(item).append(",");
});
System.out.println(stringBuilder3);
//2,2,3,3,3,5,7,
distinct
//distinct
//distinct主要用來去重,以下代碼片段使用 distinct 對元素進行去重:
List<Integer> distinct = Arrays.asList(3, 2, 2, 3, 7, 3, 5);
StringBuilder stringBuilder4 = new StringBuilder();
Stream<Integer> distinct1 = distinct.stream().distinct();
distinct1.forEach(item -> {stringBuilder4.append(item).append(",");
});
System.out.println(stringBuilder4);
//3,2,7,5,
綜合用法
//接下來演示下,當一個Stream先后通過filter、map、sort、limit以及distinct處理
//后會發生什么。
List<String> list = Arrays.asList("mz", "", "mz55", "m", "MZ","Hello","HelloWord","mz");
StringBuilder stringBuilder5 = new StringBuilder();
Stream<Integer> distinct2 = list.stream().filter(ite -> ite.length() <= 6).map(String::length).sorted().limit(3).distinct();
distinct2.forEach(item -> {stringBuilder5.append(item).append(",");
});
System.out.println(stringBuilder5);
//0,1,2,
forEach
//forEach
//Stream 提供了方法 “forEach’來迭代流中的每個數據。以下代碼片段使用 forEach 輸出了10個隨機數:
Random random = new Random();
random.ints().limit(10).forEach(System.err::println);
count
//count
//count用來統計流中的元素個數。
List<String> count = Arrays.asList("mz", "", "mz55", "m", "MZ","Hello","HelloWord","mz");
long count1 = count.stream().count();
System.err.println(count1);
//8
collect
//collect
//collect就是一個歸約操作,可以接受各種做法作為參數,將流中的元素累積成一個匯總結果:
List<String> collect = Arrays.asList("mz", "", "mz55", "m", "MZ","Hello","HelloWord","mz");
StringBuilder stringBuilder6 = new StringBuilder();
List<String> mz = collect.stream().filter(item -> item.startsWith("m")).collect(Collectors.toList());
mz.forEach(itme -> {stringBuilder6.append(itme).append(",");
});
System.err.println(stringBuilder6.toString());
//mz,mz55,m,mz,