使用lambda在Java流中调用带有参数的构造函数

Jes*_*ica 13 java lambda java-8 java-stream

我想调用MySortedSet的构造函数,它将Comparator 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));
}
Run Code Online (Sandbox Code Playgroud)

Hol*_*ger 23

如果要将其他捕获的值作为参数传递,则无法使用方法引用.您将不得不使用lambda表达式:

MySortedSet<E> :: new
Run Code Online (Sandbox Code Playgroud)

=>

() -> new MySortedSet<E>(c)
Run Code Online (Sandbox Code Playgroud)