rxjava 与 kotlin filter/groupBy/(flatten) 对比

filter

rxjava :

@Test
public void test3() {
    ArrayList<Integer> integers = new ArrayList<>();
    for (int i = 0; i < 6; i++) {
        integers.add(i);
    }

    Observable.fromIterable(integers)
            .filter(new Predicate<Integer>() {
                @Override
                public boolean test(Integer integer) throws Exception {
                    return integer % 2 == 0;
                }
            })
            .subscribe(new Consumer<Integer>() {
                @Override
                public void accept(Integer integer) throws Exception {
                    System.out.println("integer=======" + integer);
                }
            });
}
//integer=======0
//integer=======2
//integer=======4

kotlin :

@Test
fun test3() {
    val list = listOf(1, 2, 3, 3, 4, 5, 6)
    list.filter {
        it % 2 == 0
    }.forEach {
        println(it)
    }
}
//2
//4
//6

groupBy

rxjava :


@Test
public void test2() {
    ArrayList<Integer> integers = new ArrayList<>();
    for (int i = 0; i < 6; i++) {
        integers.add(i);
    }

    Observable.fromIterable(integers)
            .groupBy(new Function<Integer, String>() {
                @Override
                public String apply(Integer integer) throws Exception {
                    return integer % 2 == 0 ? "偶数" : "奇数";
                }
            })
            .subscribe(new Consumer<GroupedObservable<String, Integer>>() {
                @Override
                public void accept(GroupedObservable<String, Integer> groupedObservable) {
                    final String key = groupedObservable.getKey();
                    groupedObservable.subscribe(new Consumer<Integer>() {
                        @Override
                        public void accept(Integer integer) throws Exception {
                            System.out.println("key:" + key + " = " + "value:" + integer);
                        }
                    });
                }
            });
}
//key:偶数 = value:0
//key:奇数 = value:1
//key:偶数 = value:2
//key:奇数 = value:3
//key:偶数 = value:4
//key:奇数 = value:5

kotlin :


@Test
fun test2() {
    val list = listOf(1, 2, 3, 4, 5, 6)
    list.groupBy {
        if (it % 2 == 0) {
            "偶数"
        } else {
            "奇数"
        }
    }.forEach {
        println(it)
        val key = it.key
        val value = it.value
        println("key:$key === value: $value")
        value.forEach {
            println("遍历value:$it ")
            println("-------------------")
        }
        println("============================")
    }
}
//奇数=[1, 3, 5]
//key:奇数 === value: [1, 3, 5]
//遍历value:1 
//-------------------
//遍历value:3 
//-------------------
//遍历value:5 
//-------------------
//============================
//偶数=[2, 4, 6]
//key:偶数 === value: [2, 4, 6]
//遍历value:2 
//-------------------
//遍历value:4 
//-------------------
//遍历value:6 
//-------------------
//============================

(flatten): 组装集合

rxjava

@Test
public void test1() {
    ArrayList<Integer> integers = new ArrayList<>();
    integers.add(1);
    integers.add(2);
    integers.add(3);
    integers.add(4);
    Observable.fromIterable(integers)
            .subscribe(new Consumer<Integer>() {
                @Override
                public void accept(Integer integer) throws Exception {
                    System.out.println("fromIterable integer======" + integer);
                }
            });


    ArrayList<Integer> integers1 = new ArrayList<>();
    integers1.add(1);

    ArrayList<Integer> integers2 = new ArrayList<>();
    integers1.add(2);

    ArrayList<Integer> integers3 = new ArrayList<>();
    integers1.add(3);

    ArrayList<Integer> integers4 = new ArrayList<>();
    integers1.add(4);

    Observable.fromArray(integers1, integers2, integers3, integers4)
            .flatMap(new Function<ArrayList<Integer>, ObservableSource<Integer>>() {
                @Override
                public ObservableSource<Integer> apply(ArrayList<Integer> integers) throws Exception {
                    return Observable.fromIterable(integers);
                }
            })
            .subscribe(new Consumer<Integer>() {
                @Override
                public void accept(Integer integer) throws Exception {
                    System.out.println("fromArray integer======" + integer);
                }
            });
}
//fromIterable integer======1
//fromIterable integer======2
//fromIterable integer======3
//fromIterable integer======4
//fromArray integer======1
//fromArray integer======2
//fromArray integer======3
//fromArray integer======4 

kotlin:

@Test
fun test1() {
    val list1 = listOf(1, 2, 3, 4)
    list1.forEach {
        println("单纯列表========$it")
    }

    val list2 = listOf(listOf(1), listOf(2), listOf(3), listOf(4)).flatten()
    list2.forEach {
        println("flatten四个列表===========$it")
    }
}
单纯列表========1
单纯列表========2
单纯列表========3
单纯列表========4
flatten四个列表===========1
flatten四个列表===========2
flatten四个列表===========3
flatten四个列表===========4
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值