List中相同Id相同的数据合并到一个lIst中

package com.tt;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSON;

public class tt {
    
    private static String getStr(List<String> listStr) {
        StringBuffer sb = new StringBuffer ("'',");
        String str = ""; 
       for ( String string : listStr ) {
           sb.append ("'").append (string).append ("',");
       }
       str = sb.toString ();
       if(str.length ()>0) {
           str = str.substring (3, str.length ()-1);
       }
        return str;
    }

    private static Map<String,List<String>> changeMapList(List<Map<String, String>> listMap){
        //如果不是重复数据就创建个新的List放入map1
          List<String> list = null;
          //根据key相同存放数据
          Map<String,List<String>> map1 = new HashMap<>();
          for(Map<String,String> map2:listMap){
              list = map1.get(map2.get("id"));
              if(list==null){
                  list = new ArrayList<>();
                  map1.put(map2.get("id"),list);
              }
              list.add(map2.get("name"));
          }
          return map1;
      }
    public static void main(String[] args){
        List<Map<String,String>> listMap = new ArrayList<> ();
        Map<String,String> map = new HashMap<> ();
        map.put ("id", "CJ1903021704781334");
        map.put ("name", "wwww");
        listMap.add (map);
        map = new HashMap<> ();
        map.put ("id", "CJ1903021704781334");
        map.put ("name", "tttttt");
        listMap.add (map);
        map = new HashMap<> ();
        map.put ("id", "CJ1903021704781334");
        map.put ("name", "yyyyyyy");
        listMap.add (map);
        map = new HashMap<> ();
        map.put ("id", "222");
        map.put ("name", "uuuuu");
        listMap.add (map);
        System.err.println (JSON.toJSONString (changeMapList (listMap)));
        //如果不是重复数据就创建个新的List放入map1
        List<String> list = null;
        
        //根据key相同存放数据
        Map<String,List<String>> map1 = new HashMap<>();
        
        for(Map<String,String> map2:listMap){
            list = map1.get(map2.get("id"));
            if(list==null){
                list = new ArrayList<>();
                map1.put(map2.get("id"),list);
            }
            list.add(map2.get("name"));
        }
        for ( List<String> listStr : map1.values ()) {
            System.out.println (getStr (listStr));
        }
    }

}
运行结果:如图

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
如果你想要合并两个相同的列表对象,可以根据其id属性来判断是否是同一个对象,然后将它们合并成一个新的列表。下面是一种实现方式: ```python class Item: def __init__(self, id, name): self.id = id self.name = name def __str__(self): return f"Item(id={self.id}, name={self.name})" def merge_lists(list1, list2): merged_items = {} for item in list1 + list2: if item.id not in merged_items: merged_items[item.id] = item else: merged_items[item.id].name += f", {item.name}" return list(merged_items.values()) # Example usage list1 = [Item(1, "item1"), Item(2, "item2"), Item(3, "item3")] list2 = [Item(2, "item2"), Item(3, "item3"), Item(4, "item4")] merged_list = merge_lists(list1, list2) print(merged_list) ``` 在上面的代码,我们首先定义了一个`Item`类,它包含一个`id`和`name`属性。然后,我们定义了一个`merge_lists`函数,它接收两个列表作为参数,并返回一个合并后的列表。我们使用一个字典`merged_items`来保存合并后的数据,根据每个`Item`对象的`id`属性来判断是否是同一个对象。如果是同一个对象,我们就将它们的`name`属性合并起来,用逗号分隔。最后,我们将字典的值转换为列表并返回。 在上面的例子,我们将`list1`和`list2`合并起来,并输出结果: ``` [Item(id=1, name=item1), Item(id=2, name=item2, item2), Item(id=3, name=item3, item3), Item(id=4, name=item4)] ``` 从输出结果可以看出,我们成功地将`list1`和`list2`合并成了一个新的列表,并根据`id`属性将数据去重合并

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值