Java流式处理

说明

本文简单记录流式处理遇到的问题

处理对象集合

对象结构

@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserDto {
    //中文名
    private String nameZh;
    //英文名
    private String nameEn;
    //日文名
    private String nameJp;
    //邮箱号集合
    private List<String> emailList;
}

将对象多个属性取到集合中

    public static void main(String[] args) {
        UserDto u1 = new UserDto("张三","zhangsan","zs", Arrays.asList("zhangsan@qq.com","zhangsan@gmail.com"));
        UserDto u2 = new UserDto("李四","lisi","zs", Arrays.asList("lisi@qq.com","lisi@gmail.com"));
        getMutipleAttribute(Arrays.asList(u1,u2));
    }
    private static void getMutipleAttribute(List<UserDto> userDtoList){
        List<String> result = userDtoList.stream().map(userDto -> {
            Set<String> set = new HashSet<>();
            set.add(userDto.getNameZh());
            set.add(userDto.getNameEn());
            set.add(userDto.getNameJp());
            return set;
        }).flatMap(Collection::stream).distinct().collect(Collectors.toList());
        System.out.println(result);
    }

结果

[张三, zhangsan, zs, 李四, lisi]

将list转map

    private static void listToMap(List<UserDto> userDtoList){
        Map<String, UserDto> map = userDtoList.stream().collect(Collectors.toMap(UserDto::getNameZh, Function.identity()));
        System.out.println(map);
        Map<String, List<String>> nameEmailMap = userDtoList.stream().collect(Collectors.toMap(UserDto::getNameZh, UserDto::getEmailList));
        System.out.println(nameEmailMap);
    }

结果

{李四=UserDto(nameZh=李四, nameEn=lisi, nameJp=zs, emailList=[lisi@qq.com, lisi@gmail.com]), 张三=UserDto(nameZh=张三, nameEn=zhangsan, nameJp=zs, emailList=[zhangsan@qq.com, zhangsan@gmail.com])}
{李四=[lisi@qq.com, lisi@gmail.com], 张三=[zhangsan@qq.com, zhangsan@gmail.com]}

将对象中的集合按流经行处理

    private static void getUserEmailList(List<UserDto> userDtoList){
        List<String> emailList = userDtoList.stream().map(UserDto::getEmailList).flatMap(Collection::stream)
                .collect(Collectors.toList());
        System.out.println(emailList);
    }

结果

[zhangsan@qq.com, zhangsan@gmail.com, lisi@qq.com, lisi@gmail.com]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值