用java8写一个当List<B>中多个字段与List<A>进行match,match成功时,将match到的List<A>和List<B>出力的共通方法
时间: 2024-05-02 16:20:52 浏览: 144
listview与SQLite结合实现记事本功能
假设List<A>和List<B>都有一个名为"key"的字段,可以使用Java 8的Stream API实现:
```java
public static void matchAndPrint(List<A> listA, List<B> listB) {
Map<Object, List<B>> mapB = listB.stream()
.collect(Collectors.groupingBy(B::getKey));
listA.stream()
.filter(a -> mapB.containsKey(a.getKey()))
.forEach(a -> {
List<B> matchedBs = mapB.get(a.getKey());
System.out.println("Matched A: " + a);
System.out.println("Matched Bs: " + matchedBs);
});
}
```
这段代码首先使用listB生成一个Map,以"key"字段作为key,以符合该key的B对象列表作为value。然后遍历listA,对于每个A对象,检查mapB中是否包含该A对象的"key",如果包含,则获取与之匹配的B对象列表,并输出。
阅读全文