一起盡在代碼中学赛,大家可以參考代碼理解stream的各種操作
先把一些正常的中間條件以及結(jié)束條件羅列一下
Intermediate(中間操作):
map (mapToInt, flatMap 等)楚里、 filter副瀑、 distinct称诗、 sorted倘零、 peek铛绰、 limit舞吭、 skip绰上、 parallel旨怠、 sequential、 unordered
Terminal(結(jié)束操作):
forEach蜈块、 forEachOrdered鉴腻、 toArray、 reduce百揭、 collect爽哎、 min、 max器一、 count课锌、 anyMatch、 allMatch祈秕、 noneMatch渺贤、 findFirst、 findAny请毛、 iterator
Short-circuiting(快速匹配):
anyMatch志鞍、 allMatch、 noneMatch方仿、 findFirst述雾、 findAny、 limit
package org.gfu.base.stream;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* jdk1.8 stream application
*
* https://stackify.com/streams-guide-java-8/
* @author 719383495@qq.com | 719383495qq@gmail.com | 有問題可以郵箱或者github聯(lián)系我
* @date 2019/9/22 12:48
*/
public class StreamMain {
private static final int HASH_MAP_INIT_SIZE = 16;
public static void main(String[] args) {
Map map = new HashMap(HASH_MAP_INIT_SIZE);
listStreamHandler03(StreamUnit.getStreamUnit());
mapStreamHandler(map);
}
/**
* stream basic operation
*
* @param list
*/
private static void listStreamHandler(List<StreamUnit> list) {
List<String> result = list
.stream()
.filter(i -> i.name.equals("zhangsan"))
.map(i -> {
StreamUnit su = new StreamUnit();
su.name = i.name;
su.des = i.des;
return su;
})
.flatMap(i -> {
String[] ss = i.name.split("");
return Stream.of(ss);
})
.skip(2)
.limit(5)
// .peek()
// .collect(Collectors.toSet())
.collect(Collectors.toList());
System.out.println(result);
}
/**
* flatMap and reduce
*
* @param list
*/
private static void listStreamHandler01(List<StreamUnit> list) {
Optional<String> result = list
.stream()
.flatMap(i -> Stream.of(i.name.split("")))
.reduce(String::concat);
System.out.println(result);
}
/**
* reduce params:{startValue, result , item}
*
* @param list
*/
private static void listStreamHandler02(List<StreamUnit> list) {
String result = list
.stream()
.flatMap(i -> Stream.of(i.name.split("")))
.skip(4)
.reduce("fadsf", String::concat);
System.out.println(result);
}
/**
* reduce params:{object, result , item}
*
* @param list
*/
private static void listStreamHandler03(List<StreamUnit> list) {
List<StreamUnit> initList = new ArrayList<>(1);
List<StreamUnit> result = list.stream()
.reduce(initList, (acc, i) -> {
System.out.println(acc);
StreamUnit su = new StreamUnit();
su.name = i.toString();
acc.add(su);
return acc;
}, (u, i) -> u);
System.out.println(result);
}
private static void mapStreamHandler(Map map) {
map.entrySet().stream();
}
}
``