如何转换“a”;为每个“嵌套”;到Java8lambda/Stream构造?

如何转换“a”;为每个“嵌套”;到Java8lambda/Stream构造?,java,lambda,collections,java-8,java-stream,Java,Lambda,Collections,Java 8,Java Stream,如何转换以下代码块: List<ExecutableElement> methods = ... List<ExecutableElement> hiddens = new ArrayList<>(); for (ExecutableElement hider : methods) { for (ExecutableElement hidden : methods) { if (elements.hides(hider, hidden) || el

如何转换以下代码块:

List<ExecutableElement> methods = ...
List<ExecutableElement> hiddens = new ArrayList<>();
for (ExecutableElement hider : methods) {
  for (ExecutableElement hidden : methods) {
    if (elements.hides(hider, hidden) || elements.overrides(hider, hidden, type)) {
      hiddens.add(hidden);
    }
  }
}
methods.removeAll(hiddens);

flatMap应该做到这一点:

对于每个ExecutableElement,迭代所有ExecutableElement并查找其隐藏的所有元素,然后通过flatMap将所有这些流折叠为单个流,将其收集到列表中,并删除所有隐藏的元素

methods.removeAll(
    methods.stream ()
           .flatMap (hider -> methods.stream()
                                     .filter (hidden -> elements.hides(hider, hidden) || 
                                                        elements.overrides(hider, hidden, type))
                    )
           .collect(Collectors.toList())
);

那么,你试过什么?有什么问题吗?为什么不改用
removeIf()
methods.removeAll(
    methods.stream ()
           .flatMap (hider -> methods.stream()
                                     .filter (hidden -> elements.hides(hider, hidden) || 
                                                        elements.overrides(hider, hidden, type))
                    )
           .collect(Collectors.toList())
);