当list<B>和list<A>以keyList进行匹配,且皮匹配到的件数比是N:M,将匹配成功的list<A>和list<B>出力。用java8写一段实现上述需求的共通方法
时间: 2024-05-08 08:15:39 浏览: 77
C# List用法详解,可作为C#开发参考。
假设 A 类和 B 类都有一个名为 key 的属性,可以使用 Java 8 的 Stream API 来实现上述需求。具体实现如下:
```
public static void matchListsByKey(List<A> listA, List<B> listB) {
Map<Object, List<A>> mapA = listA.stream().collect(Collectors.groupingBy(A::getKey));
Map<Object, List<B>> mapB = listB.stream().collect(Collectors.groupingBy(B::getKey));
Set<Object> commonKeys = mapA.keySet().stream().filter(mapB::containsKey).collect(Collectors.toSet());
for (Object key : commonKeys) {
List<A> matchedA = mapA.get(key);
List<B> matchedB = mapB.get(key);
System.out.println("Matched " + matchedA.size() + " A objects with " + matchedB.size() + " B objects:");
System.out.println("A: " + matchedA);
System.out.println("B: " + matchedB);
}
}
```
首先,将 listA 和 listB 分别按照 key 属性分组成 Map,其中 key 是分组的依据。然后,取出两个 Map 中的共同 key,即表示匹配成功的 key。最后,遍历共同 key,取出匹配成功的 A 对象和 B 对象,并输出到控制台。
阅读全文