如何Map<X, List<String>>通过Xp 减少分组并同时加入所有列表值,这样我最后会有Map<Integer, List<String>>什么?
这是我到目前为止所尝试的:
class X {
int p;
int q;
public X(int p, int q) { this.p = p; this.q = q; }
}
Map<X, List<String>> x = new HashMap<>();
x.put(new X(123,5), Arrays.asList("A","B"));
x.put(new X(123,6), Arrays.asList("C","D"));
x.put(new X(124,7), Arrays.asList("E","F"));
Map<Integer, List<String>> z = x.entrySet().stream().collect(Collectors.groupingBy(
entry -> entry.getKey().p,
mapping(Map.Entry::getValue,
reducing(new ArrayList<>(), (a, b) -> { a.addAll(b); return a; }))));
System.out.println("z="+z);
Run Code Online (Sandbox Code Playgroud)
但结果是:z = {123 = [E,F,A,B,C,D],124 = [E,F,A,B,C,D]}.
我想要z = {123 = [A,B,C,D],124 = [E,F]}