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);