您的位置:首页 > 编程语言 > Java开发

java8 lambda小试牛刀,利用Stream把list转map,并将两个list的数据对象合并起来

2017-09-19 15:02 405 查看
java8 lambda小试牛刀,利用Stream把list转map,并将两个list的数据对象合并起来

[java] view
plain copy

public static void main(String[] args) {  

        // 集合1  

        List<SkillUpgrade> lists = new ArrayList<>();  

        SkillUpgrade s = new SkillUpgrade();  

        s.setLv(1);  

        s.setAppearNum(100);  

        lists.add(s);  

        SkillUpgrade s2 = new SkillUpgrade();  

        s2.setLv(2);  

        s2.setAppearNum(200);  

        lists.add(s2);  

        // 集合1  

        List<SkillUpgrade> listx = new ArrayList<>();  

        SkillUpgrade x = new SkillUpgrade();  

        x.setLv(1);  

        x.setSelectNum(1100);  

        listx.add(x);  

        SkillUpgrade x2 = new SkillUpgrade();  

        x2.setLv(2);  

        x2.setSelectNum(1200);  

        listx.add(x2);  

        // 把list转map,{k=lv,vaule=并为自身}  . SkillUpgrade->SkillUpgrade或Function.identity()  

        Map<Integer, SkillUpgrade> map = listx.stream()  

                .collect(Collectors.toMap(SkillUpgrade::getLv, SkillUpgrade -> SkillUpgrade));  

        System.out.println("map:="+map);  

        // 合并  

        lists.forEach(n -> {  

            // 如果等级一致  

            if (map.containsKey(n.getLv())) {  

                SkillUpgrade obj = map.get(n.getLv());  

                // 把数量复制过去  

                n.setSelectNum(obj.getSelectNum());  

            }  

        });  

        System.out.println("lists:="+lists);  

        // 重复问题  

        Map<Integer, SkillUpgrade> keyRedo = listx.stream()  

                .collect(Collectors.toMap(SkillUpgrade::getLv, Function.identity(), (key1, key2) -> key2));  

        // 方式二:指定实例的map  

        Map<Integer, SkillUpgrade> linkedHashMap = listx.stream().collect(Collectors.toMap(SkillUpgrade::getLv,  

                SkillUpgrade -> SkillUpgrade, (key1, key2) -> key2, LinkedHashMap::new));  

    }  

      

    /** 

     * output:map:={1=SkillUpgrade [skillId=null, skillName=null, lv=1, persNum=null, selectNum=1100, appearNum=null], 2=SkillUpgrade [skillId=null, skillName=null, lv=2, persNum=null, selectNum=1200, appearNum=null]} 

     *        lists:=[SkillUpgrade [skillId=null, skillName=null, lv=1, persNum=null, selectNum=1100, appearNum=100], SkillUpgrade [skillId=null, skillName=null, lv=2, persNum=null, selectNum=1200, appearNum=200]] 

     */  

输出结果:

map:={1=SkillUpgrade [skillId=null, skillName=null, lv=1, persNum=null, selectNum=1100, appearNum=null], 2=SkillUpgrade [skillId=null, skillName=null, lv=2, persNum=null, selectNum=1200, appearNum=null]}

lists:=[SkillUpgrade [skillId=null, skillName=null, lv=1, persNum=null, selectNum=1100, appearNum=100], SkillUpgrade [skillId=null, skillName=null, lv=2, persNum=null, selectNum=1200, appearNum=200]]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐