Java List 获取部分组成new list,获取两个list相同/不同的内容

获取List中的一项,组成新的List<Object>

复制代码
List<String> _outingCntry = list.stream().map(OSzItem::getGroup).
collect(Collectors.toList());

获取List中的多项,组成一个Map(Item1,item2)

复制代码
List<vo> list = new ArrayList<>();
Map<String, String> map = list.stream().collect(
Collectors.toMap(vo::getxxx, vo::getxxx));

按照条件获取List,包括相同项,不同项等

获取两个Array / List 等不相同项是比较繁琐的过程,通常需要设置全局变量,然后通过for语句判断是否相等,同时改变全局变量。全局变量没有变化的项即是不同。

这种方式显得代码啰嗦,不符合自然思考习惯,所有可以借助List的stream来解决,代码相对整洁。

复制代码
List<SalrCntry> _diff = _amtCntrylist.stream().
filter(ele->!_outCntry.contains(ele.getCntry())).
collect(Collectors.toList());

通过remove去除相同,剩下的是不同

public class FindDifferencesBetweenListsUnitTest { private static final List listOne = Arrays.asList("Jack", "Tom", "Sam", "John", "James", "Jack"); private static final List listTwo = Arrays.asList("Jack", "Daniel", "Sam", "Alan", "James", "George"); }

List<String> differences = new ArrayList<>(listOne); differences.removeAll(listTwo); assertEquals(2, differences.size()); assertThat(differences).containsExactly("Tom", "John");

List<String> differences = listTwo.stream() .filter(element -> !listOne.contains(element)) .collect(Collectors.toList()); assertEquals(3, differences.size()); assertThat(differences).containsExactly("Daniel", "Alan", "George");

相关推荐
毕设源码-朱学姐13 分钟前
【开题答辩全过程】以 高校食堂餐饮管理系统的设计与实现为例,包含答辩的问题和答案
java
过期动态17 分钟前
Java开发中的@EnableWebMvc注解和WebMvcConfigurer接口
java·开发语言·spring boot·spring·tomcat·maven·idea
摇滚侠18 分钟前
IDEA 定义返回值快捷键
java·ide·intellij-idea
毕设源码-郭学长20 分钟前
【开题答辩全过程】以 高校考勤管理系统为例,包含答辩的问题和答案
java·eclipse
A懿轩A1 小时前
【Maven 构建工具】从零到上手 Maven:安装配置 + IDEA 集成 + 第一个项目(保姆级教程)
java·maven·intellij-idea
野犬寒鸦1 小时前
从零起步学习并发编程 || 第一章:初步认识进程与线程
java·服务器·后端·学习
我爱娃哈哈1 小时前
SpringBoot + Flowable + 自定义节点:可视化工作流引擎,支持请假、报销、审批全场景
java·spring boot·后端
XiaoFan0122 小时前
将有向工作流图转为结构树的实现
java·数据结构·决策树
小突突突2 小时前
浅谈Java中的反射
java·开发语言
Anastasiozzzz2 小时前
LeetCode Hot100 295. 数据流的中位数 MedianFinder
java·服务器·前端