代码片段:flatMap方法用法

10 篇文章 0 订阅
3 篇文章 0 订阅
说明

flatMap方法是Java8中操作stream的一种方法,它可以将多个Stream连接成一个Stream。

举栗说明:

给你一个列表:

List<String> list = Arrays.asList("a,b,c", "b,c,e", "a,d,f", "a,e", "b,d");

需求:得到不重复的字母集合

————————————————————
如果不清楚flatMap的用法,那么很多人可能会先来两层for循环…

较为优雅的处理
package cn.itoak;

import java.util.*;
import java.util.stream.Collectors;

/**
 * Project:CodeFragment
 * FullPath:cn.itoak.FlatMapUsage
 * Date:2019/9/20
 * Time:16:15
 * Description:flatMap方法用法
 *
 * @author itoak
 * @version 1.0
 */
public class FlatMapUsage {

    public static Set<String> handle(List<String> list) {
        return Optional.ofNullable(list)//判空
                .orElse(new ArrayList<>())//空处理
                .stream()//转流操作
                .map(str -> str.split(","))//将列表单个元素分离,得到数组
                .flatMap(Arrays::stream)//将上一步得到的数组转流,并拼接成一个stream
                .collect(Collectors.toSet());//将流转Set集合,去重
    }

    public static void main(String[] args) {
        List<String> list = Arrays.asList("a,b,c", "b,c,e", "a,d,f", "a,e", "b,d");
        Set<String> strings = handle(list);
    }
}

这样,你就能得到一个包含不通字母的集合了,是不是比两层for循环看起来要舒服一点呢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值