两个listmap合并去重_掌握这个技巧,多列合并一列如此简单!

804ca386a1d22d0bc059619c561591bc.png

今天,我们要讲的,也是一个实际案例

需求:1、把每组人员合并多一列中,并使用换行2、如果有重名的,仅保留一个

5a247302220c132a32c521ebe3959a08.png

咋一看,你可能想到了VBA来处理,函数好像处理文本有难度

但是,其实这个问题非常简单,简答几步就可搞定!

第一步:加载内容到Power Query(PQ)

b204421f0468b073bf5bdccfd598029b.png

情况1:组员录入没有重名,直接合并

> 按住Shift,批量选择组员列> 选择添加列,合并列,选择任意分隔符

> 修改 分隔符为:#(lf) > 加载到EXCEL ,搞定

注:#(lf) 在PQ是表示换行符

36f25b8f591c0b4cdfa4474edfaf956c.png

情况2:组员录入有重名,辅助M函数合并

> 新增列

> 录入公式:Text.Combine(List.Distinct(List.Skip(Record.ToList(_))),"#(lf)")

M函数简述:把当前行的内容转为为list,去掉组别,去重后使用换行符合并> Record.ToList:把当前合并转成list> List.Skip:去掉list第一个,也就是组别,不需要合并>List.Distinct:对组内姓名去重,保留一个> Text.Combine:使用换行符合并组员

c1f3ef78d48bcb2e02cd9673e5b87d21.png

小结

c4e33a8d760afe2c007acfafa02a5631.png

今天这个小案例就到这里,使用PQ可以代替我们传统的VBA,某些场景下效率要高很多,快去试试吧!

收藏备查!

首发 公众号:掌握这个技巧,多列合并一列如此简单!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用Java的Stream API来合并两个List<Map>并去重。下面是一个示例代码: ```java import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Map<String, Object>> list1 = new ArrayList<>(); Map<String, Object> map1 = new HashMap<>(); map1.put("id", 1); map1.put("name", "John"); map1.put("age", 25); list1.add(map1); List<Map<String, Object>> list2 = new ArrayList<>(); Map<String, Object> map2 = new HashMap<>(); map2.put("id", 2); map2.put("name", "Jane"); map2.put("age", 30); list2.add(map2); List<Map<String, Object>> mergedList = mergeAndDistinct(list1, list2); for (Map<String, Object> map : mergedList) { System.out.println(map); } } public static List<Map<String, Object>> mergeAndDistinct(List<Map<String, Object>> list1, List<Map<String, Object>> list2) { List<Map<String, Object>> mergedList = new ArrayList<>(list1); mergedList.addAll(list2); List<Map<String, Object>> distinctList = mergedList.stream() .collect(Collectors.toMap( map -> map.get("id"), map -> map, (map1, map2) -> map1 )) .values() .stream() .collect(Collectors.toList()); return distinctList; } } ``` 在上述代码中,我们定义了两个包含MapList,即list1和list2。我们使用`addAll()`方法将两个List合并为一个mergedList。然后,我们使用Stream API对mergedList进行操作,使用`Collectors.toMap()`方法按照id字段进行去重,并将结果转换为List。最后,我们打印出合并去重后的结果。 注意:在这个示例中,假设每个Map对象都有一个名为"id"的字段用于唯一标识。你可以根据实际需求调整代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值