Java8新特性之FlatMap&Reduce

1.FlagMap

// flatMap:接收一个T返回一个R,将一个元素转为一个新的流 ;R apply(T t);
<R> Stream<R> flatMap(Function<? super T, ? extends Stream<? extends R>> mapper);
示例代码
// flatMap: 将一个元素转为一个新的流  1-N
List<String> asList = Arrays.asList("zs", "ls", "ww", "zl", "tq");
List<String> stringList = asList.stream()
	.flatMap(item -> Arrays.asList(("1" + item).toUpperCase(), ("2" + item).toUpperCase(), ("3" + item).toUpperCase()).stream())
	.collect(Collectors.toList());
System.out.println("stringList = " + stringList);

image

2.Reduce

// reduce:接收一个BinaryOperator类型的函数式接口,将多个元素归并为一个
Optional<T> reduce(BinaryOperator<T> accumulator);
示例代码
// reduce: 将多个元素归并为一个    N-1
List<Integer> asList = Arrays.asList(1, 2, 3, 4, 5);
Optional<Integer> optional = asList.stream().reduce((x, y) -> x + y);
System.out.println("optional.get() = " + optional.get());

image

3.Concat合并流

List<Qiu> list1 = Arrays.asList(new Qiu(1L, "AA"), new Qiu(2L, "BB"), new Qiu(3L, "CC"));
        List<Qiu> list2 = Arrays.asList(new Qiu(3L, "DD"), new Qiu(2L, "EE"), new Qiu(5L, "FF"));

        // Stream<Qiu> concat = Stream.concat(list1.stream(), list2.stream());

        Map<Long, Qiu> map = new HashMap<>();
        Stream.concat(list1.stream(), list2.stream()).forEach(item -> {
            Qiu qiu = item;
            if (map.containsKey(item.getId())) {
                qiu = map.get(item.getId());
                qiu.setName(qiu.getName() + "---" + item.getName());
            }
            map.put(item.getId(), qiu);
        });
        System.out.println("map = " + map);
        List<Qiu> qiuList = map.values().stream().collect(Collectors.toList());
        System.out.println("qiuList = " + qiuList);

image

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值