用java8写一个当List<B>中多个字段与List<A>进行match,match成功时,将match到的List<A>和List<B>出力的共通方法
时间: 2024-06-12 11:04:46 浏览: 20
假设List<A>和List<B>中都有一个属性名为"field",可以使用Java 8的stream和Lambda表达式来实现:
```java
public static void match(List<A> listA, List<B> listB) {
Map<String, List<A>> mapA = listA.stream().collect(Collectors.groupingBy(A::getField));
Map<String, List<B>> mapB = listB.stream().collect(Collectors.groupingBy(B::getField));
mapA.forEach((k, v) -> {
List<B> matchedB = mapB.get(k);
if (matchedB != null) {
System.out.println("Matched List A:");
v.forEach(System.out::println);
System.out.println("Matched List B:");
matchedB.forEach(System.out::println);
}
});
}
```
首先,将List<A>和List<B>转换为Map<String, List<A>>和Map<String, List<B>>,其中String为"field"属性的值,List为具有相同"field"属性值的对象列表。
然后,遍历Map<String, List<A>>,对于每个键值对,从Map<String, List<B>>中获取具有相同键的对象列表,并输出匹配到的List<A>和List<B>。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)