java8 用strem流处理集合的例子 list转Set、Map

java8 用strem流处理集合的例子 list转Set、Map一.需求:遍历List集合,集合中的对象的某个字段是以逗号分割的,把分割后的值保存在Set集合中普通的写法:Set<String>cfgPortfolioSet=newHashSet<>(20);for(CfgPortfoliocfgPortfolio:cfgPortfolioList){…

 

一. 需求:遍历List集合,集合中的对象的某个字段是以 逗号分割的,把分割后的值保存在Set集合中

普通的写法:

        Set<String> cfgPortfolioSet = new HashSet<>(20);
        for (CfgPortfolio cfgPortfolio : cfgPortfolioList) {
            String compreftmp = cfgPortfolio.getComprefs();
            if(!StringTools.isTrimEmpty(compreftmp)){
                String[] split = compreftmp.split(",");
                for (String s : split) {
                    cfgPortfolioSet.add(s);
                }
             
            }
        }

java 8 stream流的写法:

一行代码搞定

Set<String>  cfgPortfolioSet = cfgPortfolioList.stream().flatMap(cfgPortfolio -> {
            if (StringTools.isTrimEmpty(cfgPortfolio.getComprefs())) {
                return null;
            }
            return Arrays.stream(cfgPortfolio.getComprefs().split(","));
        }).collect(Collectors.toSet());

二. 将list集合转Set

普通list的转集合 是for语句遍历list,stream流直接一句代码

        // list 转 Set
        List<Man> manList = new ArrayList<>();
        Man man = new Man();
        man.setId("1");
        man.setName("人");
        manList.add(man);

        Set<Man> manSet =  manList.stream().collect(Collectors.toSet());
        manSet.contains("1");
        Iterator<Man> iterable =  manSet.iterator();
        while (iterable.hasNext()){
            System.out.println(iterable.next().getId());
        }

 

 

三. 将list集合转Map


        List<Man> manList = new ArrayList<>();
        manList.add(new Man("1", "人"));
        manList.add(new Man("1", "我"));

        //list to map 无重复key的时候
       // Map<String, Man> map1 = manList.stream().collect(Collectors.toMap(Man::getId, test->test));
        //System.out.println(map1.get("1").getName());

        //list to map 有重复key的时候
        Map<String, Man> map = manList.stream().collect(Collectors.toMap(Man::getId, Function.identity(),(test1, test2) -> test1 ));
        System.out.println(map.get("1").getName());

        //list to map value值取单个字段时
        Map<String, String> mapname1 = manList.stream().collect(Collectors.toMap(Man::getId, Man::getName, (man1,man2)-> man1 ));
        System.out.println(mapname1.get("1"));

        //list to map value值拼接
        Map<String, String> mapcomb = manList.stream().collect(Collectors.toMap(Man::getId, Man::getName, (key1, key2)-> key1+","+key2));
        System.out.println(mapcomb.get("1"));

        // list转map, 重复时将重复key的数据组成集合
        Map<String, List<String>> maplist = manList.stream().collect(Collectors.toMap(Man::getId, p ->{
            List<String> list = new ArrayList<>();
            list.add(p.getName());
            return list;
        }, (List<String> value1, List<String> value2 )-> {value1.addAll(value2); return  value1;}));
        System.out.println(maplist.get("1").toString());

 

 

今天的文章java8 用strem流处理集合的例子 list转Set、Map分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/11201.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注