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");

相关推荐
seasugar几秒前
Maven怎么会出现一个dependency-reduced-pom.xml的文件
xml·java·maven
一只淡水鱼664 分钟前
【mybatis】基本操作:详解Spring通过注解和XML的方式来操作mybatis
java·数据库·spring·mybatis
唐叔在学习21 分钟前
【唐叔学算法】第19天:交换排序-冒泡排序与快速排序的深度解析及Java实现
java·算法·排序算法
music0ant25 分钟前
Idea 配置环境 更改Maven设置
java·maven·intellij-idea
记得开心一点嘛40 分钟前
Nginx与Tomcat之间的关系
java·nginx·tomcat
界面开发小八哥1 小时前
「Java EE开发指南」如何用MyEclipse构建一个Web项目?(一)
java·前端·ide·java-ee·myeclipse
王伯爵1 小时前
<packaging>jar</packaging>和<packaging>pom</packaging>的区别
java·pycharm·jar
Q_19284999061 小时前
基于Spring Boot的个人健康管理系统
java·spring boot·后端
m0_748245172 小时前
Web第一次作业
java
小码的头发丝、2 小时前
Java进阶学习笔记|面向对象
java·笔记·学习