精华内容
下载资源
问答
  • Java8两个list集合合并成一个list集合

    千次阅读 2020-07-29 14:09:18
    java8 lambda小试牛刀,利用Streamlist转map,并将两个list的数据对象合并起来 public static void main(String[] args) { // 集合1 List lists = new ArrayList<>(); SkillUpgrade s = new SkillUpgrade(); ...

    文章来源于:http://ddrv.cn/a/280939

    详细分享,移步https://blog.csdn.net/weixin_41552767/article/details/107690660

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

    public static void main(String[] args) {
    // 集合1
    List 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 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]]

    展开全文
  • java8 lambda小试牛刀,利用Streamlist转map,并将两个list的数据对象合并起来

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


    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]]

    展开全文
  • java8 lambda小试牛刀,利用Streamlist转map,并将两个list的数据对象合并起来publicstaticvoidmain(String[]args){//集合1Listlists=newArrayList<>();SkillUpgrades=newSkillUpgrade();s.setLv(1);s....

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

    publicstaticvoidmain(String[] args) {

    // 集合1

    List lists = newArrayList<>();

    SkillUpgrade s = newSkillUpgrade();

    s.setLv(1);

    s.setAppearNum(100);

    lists.add(s);

    SkillUpgrade s2 = newSkillUpgrade();

    s2.setLv(2);

    s2.setAppearNum(200);

    lists.add(s2);

    // 集合1

    List listx = newArrayList<>();

    SkillUpgrade x = newSkillUpgrade();

    x.setLv(1);

    x.setSelectNum(1100);

    listx.add(x);

    SkillUpgrade x2 = newSkillUpgrade();

    x2.setLv(2);

    x2.setSelectNum(1200);

    listx.add(x2);

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

    Map 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 keyRedo = listx.stream()

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

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

    Map 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]]

    展开全文
  • ``` List<SoReturnPicVO> collect = picList.stream().filter(x -> x.getType() == ...我要将实体里的一字段取出来List-String,但是要根据另一字段进行判断,我写成了句,请问怎么能合并一下,写成一句
  • list 根据相同字段合并数据

    万次阅读 2015-03-27 15:25:00
    List中,User有id和money两个字段,如果id相同,就User合并,并且将money相加,java怎么处理?? 假如 id 是 String类型 User tmpUser = null; Map map = new HashMap();//合并后的User存在map中 for(User...

    List<User>中,User有id和money两个字段,如果id相同,就把User合并,并且将money相加,java怎么处理??


    假如 id 是 String类型
    
    User tmpUser = null;
    Map<String, User> map = new HashMap<String, User>();//合并后的User存在map中
    for(User oUser userList) {
         tmpUser = map.get(oUser.getId());
         if (tmpUser != null) {
                 tmpUser.setMoney(tmpUser.getMoney() + oUser.getMoney);  //money合并
         } else {
              map.put(oUser.getId(), oUser);
        }
    }

    展开全文
  • 中,User有id和money两个字段,如果id相同,就User合并,并且将money相加,java怎么处理?? 方法一: 假如 id 是 String类型 User tmpUser = null; Map<String, User> map = new HashMap<String, ...
  • java面试宝典2012

    2012-12-16 20:43:41
    55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 40 56、子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序...
  • JAVA面试宝典2010

    2011-12-20 16:13:24
    55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 36 56、子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序...
  • Java面试宝典-经典

    2015-03-28 21:44:36
    55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 36 56、子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序...
  • java为数据结构中的列表定义了一接口类java.util.list同时提供了3实现类,分别是ArrayList、Vector、LinkedList使用; 生成不重复的随机数序列;列表、集合与数组的互相转换;java为数据结构中的映射定义一接口...
  • 最新Java面试宝典pdf版

    热门讨论 2011-08-31 11:29:22
    55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 36 56、子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序...
  • Java面试宝典2012版

    2012-12-03 21:57:42
    55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 36 56、子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序...
  • Java面试宝典2012新版

    2012-06-26 19:20:00
    55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 36 56、子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序...
  • Java面试笔试资料大全

    热门讨论 2011-07-22 14:33:56
    55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 36 56、子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序...
  • Java面试宝典2010版

    2011-06-27 09:48:27
    55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 56、子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序。 ...
  • Java 面试宝典

    2013-02-01 10:02:08
    35、如何一段逗号分割的字符串转换成一数组? ............................................... 25 36、数组有没有 length()这方法? String 有没有 length()这方法? .................... 25 37、下面这...
  • 55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 36 56、子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序...
  • 55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 36 56、子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序...
  • Java经典编程300例(code)

    千次下载 热门讨论 2013-01-09 10:26:53
    实例018 实现两个变量的互换 (不借助第3个变量) 23 第4章 流程控制 25 实例019 判断某一年是否为闰年 26 实例020 验证登录信息的合法性 27 实例021 为新员工分配部门 28 实例022 用switch语句根据消费 金额计算...
  • 55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 2 56、子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序...
  • 实例027 实现两个变量的互换(不借助第3个变量) 2.3 条件语句 实例028 判断某一年是否为闰年 实例029 验证登录信息的合法性 实例030 为新员工分配部门 实例031 用Switch语句根据消费金额计算折扣 实例032 ...
  • 实例027 实现两个变量的互换(不借助第3个变量) 2.3 条件语句 实例028 判断某一年是否为闰年 实例029 验证登录信息的合法性 实例030 为新员工分配部门 实例031 用Switch语句根据消费金额计算折扣 实例032 ...
  • 实例027 实现两个变量的互换(不借助第3个变量) 2.3 条件语句 实例028 判断某一年是否为闰年 实例029 验证登录信息的合法性 实例030 为新员工分配部门 实例031 用Switch语句根据消费金额计算折扣 实例032 ...
  • 实例027 实现两个变量的互换(不借助第3个变量) 2.3 条件语句 实例028 判断某一年是否为闰年 实例029 验证登录信息的合法性 实例030 为新员工分配部门 实例031 用Switch语句根据消费金额计算折扣 实例032 ...
  • 实例027 实现两个变量的互换(不借助第3个变量) 2.3 条件语句 实例028 判断某一年是否为闰年 实例029 验证登录信息的合法性 实例030 为新员工分配部门 实例031 用Switch语句根据消费金额计算折扣 实例032 ...
  • 实例027 实现两个变量的互换(不借助 第3个变量) 37 2.3 条件语句 38 实例028 判断某一年是否为闰年 38 实例029 验证登录信息的合法性 39 实例030 为新员工分配部门 40 实例031 用Switch语句根据消费金额计算折扣 ...

空空如也

空空如也

1 2
收藏数 40
精华内容 16
关键字:

java把两个listmap合并

java 订阅