forEach
ArrayList<User> users = new ArrayList<>();
// Java 8+
users.forEach(user -> {
Log.e("nick", user.getNick());
});
//Java 7 and below
for(User user:users){
Log.e("nick", user.getNick());
}
forEach 只是简单的遍历,不会改变原数组,返回undefined,没办法使用break退出循环或者使用return从函数体内返回。
filter
users.stream().filter(user ->
!TextUtils.isEmpty(user.getNick())//过滤姓名不为空
).forEach(user ->
System.out.println(user.getNick())
);
users.parallelStream().filter(user ->
!TextUtils.isEmpty(user.getNick())
).forEach(user ->
System.out.println(user.getNick())
);
filter单纯的过滤操作,直接返回传入类型。
map 和 flatMap
java
List<String> nameList =
users.stream().map(User::getNick) //返回用户名
.limit(10) //返回前10个元素
.skip(2) //扔掉前2个元素
.collect(Collectors.toList());
kotlin
var list = listOf(listOf(10, 20), listOf(30, 40), listOf(50, 60))
var mapList = list.map {
print(it.toString())
}
println()
var flatMapList = list.flatMap {
it.asIterable()
}.map {
print(it.toString())
}
打印结果:
[10, 20][30, 40][50, 60]
102030405060
map :对每一条输入进行指定操作,然后为每一条输入返回一个对象(返回值可变)
<R> Stream<R> map(Function<? super T, ? extends R> mapper);
flatMap:遍历所有元素,为每一个创建一个集合,最后把所有集合放在一个集合中----“先映射后扁平化”
<R> Stream<R> flatMap(Function<? super T, ? extends Stream<? extends R>> mapper);