filter、forEach、map、flatMap

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章