如何将两个List合并,且其中不允许出现重复的项
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将两个List合并,且其中不允许出现重复的项相关的知识,希望对你有一定的参考价值。
参考技术A 合并多个Excel工作表是一项常见的工作任务,当然,也有许多技巧来帮助完成这项任务。下面是一个简单的方法,利用Access来合并多个Excel文件。在Access中创建对Excel工作簿的链接:在Access中选择“外部数据——导入——Excel”。
在“获取外部数据”对话框中选择“通过创建链接表来链接到数据源”。
必须为每个Excel工作簿重复该过程直到将它们都链接到数据库。
在SQL视图中开始新的查询,单击“创建——其他——查询设计”。
选择“查询工具-设计”中的“SQL视图”
在SQL视图中,为所有链接的Excel表输入Select语句,在每个Select语句间使用Union操作符,在SQL视图中输入选择查询语句
运行查询后,结果将是包含从所有链接的文件中获取并合并后的数据。
只要链接的Excel文件在相同的位置,每次打开数据库时Access将自动刷新链接以获取最新数据。这意味着只需设置一次,然后在每次需要重新组合Excel文件时运行联合查询。
然而,默认情况下,UNION操作符会移除数据中的任何重复行。如果知道数据中有重复行,并且想保留它们,那么需要使用UNION ALL,以允许传递重复行。
Java 8 lambda Stream list to Map key 重复 value合并到Collection
描述: 取list集合中两个字段,且将两个字段作为key ,map,利用steam流转为map集合,且满足key相同时,将value转为List集合
查询到资料 转自https://my.oschina.net/u/3725073/blog/1807970/
List<User> userList = new ArrayList<>(); userList.add(new User(1L, "aaa")); userList.add(new User(2L, "bbb")); userList.add(new User(3L, "ccc")); userList.add(new User(2L, "ddd")); userList.add(new User(3L, "eee"));
资料给出的解决方案
userList.stream().collect(Collectors.toMap(User::getId, e -> Arrays.asList(e.getUsername()), (List<String> oldList, List<String> newList) -> { oldList.addAll(newList); return oldList; }));
实际操作后
报空指针错误
解决方式
userList.stream().collect(Collectors.toMap(User::getId, e -> new ArrayList<>(Arrays.asList(e.getUsername())), (List<String> oldList, List<String> newList) -> { oldList.addAll(newList); return oldList; }));
拓展新需求 现在有一个集合List<Apple>的list,包括n个字段,假设为四个字段 (name,type,size,color),List中apple的name字段有相同部分,
又有一个Apple的dto,包括字段要比Apple中少,假设包括name和color字段,,现在要将List<Apple>转为Map,且Map的key为name,value为dto的集合(List<AppleDTO>)
该如何实现?
Map<String, List<AppleDTO>> map = list.stream().collect(Collectors.toMap(Apple::getName, e -> new ArrayList<>(Arrays.asList(new AppleDTO(e.getName(), e.getColor()))), (List<AppleDTO> oldList, List<AppleDTO> newList) -> { oldList.addAll(newList); return oldList; }));
注意:此时有个dto的构造方法,所以dto类中得有这个构造方法才行,感觉不用讲啊,都学到lambda了,都懂的
public AppleDTO(string name,string color){
this.name = name;
this.color = color;
}
以上是关于如何将两个List合并,且其中不允许出现重复的项的主要内容,如果未能解决你的问题,请参考以下文章
Java 8 lambda Stream list to Map key 重复 value合并到Collection
数据结构 将两个递增的有序链表合并为一个递增的有序链表。要求结果仍使用原来的两个链表的存储空间,不另外占用其他的存储空间。表中不允许有重复数据。