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

Java中,找出两个`List`集合中相同的数据(即交集)可以通过多种方式实现。其中一种简单且直接的方式是利用`ArrayList`的`retainAll()`方法[^1]。 ### 使用 `retainAll()` 方法获取交集 `retainAll()` 方法会保留集合中与其他集合共有的元素。以下是一个示例代码,展示如何通过此方法获取两个`List`集合的交集数据: ```java import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List<String> list1 = new ArrayList<>(); list1.add("A"); list1.add("B"); list1.add("C"); List<String> list2 = new ArrayList<>(); list2.add("B"); list2.add("C"); list2.add("D"); List<String> intersection = new ArrayList<>(list1); intersection.retainAll(list2); System.out.println("交集数据: " + intersection); } } ``` 执行上述代码后,输出结果将是两个集合的交集: ``` 交集数据: [B, C] ``` ### 使用 Java 8 的 Stream API 获取交集 如果使用的是 Java 8 或更高版本,还可以通过 Stream API 的 `filter()` 和 `Collectors.toCollection()` 方法实现相同的功能: ```java import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<String> list1 = new ArrayList<>(); list1.add("A"); list1.add("B"); list1.add("C"); List<String> list2 = new ArrayList<>(); list2.add("B"); list2.add("C"); list2.add("D"); List<String> intersection = list1.stream() .filter(list2::contains) .collect(Collectors.toList()); System.out.println("交集数据: " + intersection); } } ``` 此代码通过流操作过滤出 `list1` 中存在于 `list2` 的元素,最终收集为一个新的列表,结果为: ``` 交集数据: [B, C] ``` ### 注意事项 - `retainAll()` 方法会修改原始集合,因此如果需要保留原始集合不变,应先创建一个副本进行操作。 - 如果集合中包含重复元素,`retainAll()` 会保留第一个集合中的重复次数,而 Stream API 则不会考虑重复问题,仅根据是否存在进行过滤。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值