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

时间:2014-11-06 15:58:12

标签: 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));
}

1 个答案:

答案 0 :(得分:22)

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

MySortedSet<E> :: new

=&GT;

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