Java8获取两个集合对象id相等的数据
时间: 2023-08-15 21:05:51 浏览: 125
你可以使用Java 8的Stream API来获取两个集合对象id相等的数据。首先,将两个集合对象分别转换成流,然后使用map()方法将每个元素转换成id,最后使用filter()方法过滤出id相等的元素。示例代码如下:
```java
List<Object> list1 = ...;
List<Object> list2 = ...;
List<Object> result = list1.stream()
.map(o -> o.getId())
.filter(id -> list2.stream().anyMatch(o -> o.getId().equals(id)))
.collect(Collectors.toList());
```
这段代码假设你的对象有一个名为getId()的方法可以获取id。它首先将list1中的每个元素映射为其id,然后使用filter()方法过滤出list2中的元素id与list1相等的元素,最后使用collect()方法将结果收集到一个列表中。
相关问题
java8对比两个集合对象的某个属性是否相等
可以使用Java 8的Stream API来比较两个集合对象的某个属性是否相等。下面是一个示例代码:
假设有两个类User和Order,每个User都有一个唯一的ID,每个Order都有一个用户ID来表示订单所属的用户。现在要比较两个Order集合对象中的用户ID是否相等。
```java
List<Order> orderList1 = ...; // 第一个Order集合对象
List<Order> orderList2 = ...; // 第二个Order集合对象
boolean isEqual = orderList1.stream()
.map(Order::getUserId) // 获取第一个集合对象中所有订单的用户ID
.collect(Collectors.toList())
.equals(orderList2.stream()
.map(Order::getUserId) // 获取第二个集合对象中所有订单的用户ID
.collect(Collectors.toList())); // 将两个集合对象中的用户ID列表进行比较
System.out.println(isEqual); // 输出比较结果
```
该代码将两个Order集合对象中的所有订单的用户ID都提取出来,然后将其封装为一个列表对象。最后,使用List的equals()方法来比较这两个列表对象是否相等。如果相等,则说明两个Order集合对象中的所有订单的用户ID都相等。
java代码实现两个list集合中,如何获取id一样的对象
你可以通过使用StreamAPI来实现该功能。我们可以将一个List集合通过流的形式转换成另一个List集合,并在转换过程中,过滤掉其中ID不相等的元素。
具体实现的代码如下:
```
List<Object> result = list1.stream()
.filter(item1 -> list2.stream()
.anyMatch(item2 -> Objects.equals(item1.getId(), item2.getId())))
.collect(Collectors.toList());
```
其中,list1和list2是需要比较的两个List集合,他们包含了需要比较的对象,而getId()是对象中获取ID的方法。
这段代码的含义是,先通过list1.stream()将list1转换成一个流,然后通过filter()方法筛选出和list2中任意一个元素ID相同的元素,最后通过collect()方法将这些筛选出来的元素组成一个新的List集合。
希望这个方法能够帮助到你。
阅读全文