调用构造函数,其中参数位于具有 lambda 的 Java 流中

2022-09-03 05:23:23

我想为MySortedSet调用一个构造函数,它将比较器c作为参数。如何修改它以执行此操作?

public MySortedSet<E> subSet(E fromElement, E toElement) {
     return list.stream()
            .filter(x -> (list.indexOf(x) <= list.indexOf(fromElement)
                    && list.indexOf(x) < list.indexOf(toElement)))
            .collect(Collectors.toCollection(MySortedSet<E> :: new));
}

答案 1

如果要将其他捕获的值作为参数传递,则不能使用方法引用。您必须改用 lambda 表达式:

MySortedSet<E> :: new

=>

() -> new MySortedSet<E>(c)

答案 2

推荐