StreamSupport collector和java 7

StreamSupport collector和java 7,java,eclipse,java-stream,Java,Eclipse,Java Stream,我试图使用它来探索Java7上的流。我在我的项目中添加了streamsupport-1.5.4.jar,并编写了如下代码: import java8.util.stream.Collectors; public class FinantialStatement { private List<Rubric> values; public List<Rubric> getConsolidatedRubrics() { List<Ru

我试图使用它来探索Java7上的流。我在我的项目中添加了
streamsupport-1.5.4.jar
,并编写了如下代码:

import java8.util.stream.Collectors;

public class FinantialStatement {

    private List<Rubric> values;

    public List<Rubric> getConsolidatedRubrics() {
        List<Rubric> rubrics = values.stream().sorted((Rubric r1, Rubric r2) -> r1.getOrder().compareTo(r2.getOrder())).collect(Collectors.toCollection(ArrayList::new));
        return rubrics;
    }
}
import java.util.ArrayList;
import java.util.List;

import java8.util.stream.Collectors;
import java8.util.stream.StreamSupport;

public class FinantialStatement {

    private List<Rubric> values;

    public List<Rubric> getConsolidatedRubrics() {
        List<Rubric> rubrics = StreamSupport.stream(values)
                .sorted((Rubric r1, Rubric r2) -> r1.getOrder().compareTo(r2.getOrder()))
                .collect(Collectors.toCollection(ArrayList::new));
        return rubrics;
    }
}
import java8.util.stream.collector;
公开课财务报表{
私有列表值;
公共列表GetConsolidatedRubics(){
列出rubrics=values.stream().sorted((Rubric r1,Rubric r2)->r1.getOrder().compareTo(r2.getOrder()).collect(collector.toCollection(ArrayList::new));
返回准则;
}
}
我收到以下错误:

Type mismatch: cannot convert from Collector<Object,capture#1-of
?,Collection<Object>> to Collector<? super Rubric,A,R>
类型不匹配:无法从收集器转换到收集器从
java.util.Collection
接收
java8.util.stream.stream
的入口点主要是

(一)

(二)

因此,您的代码段应该如下所示:

import java8.util.stream.Collectors;

public class FinantialStatement {

    private List<Rubric> values;

    public List<Rubric> getConsolidatedRubrics() {
        List<Rubric> rubrics = values.stream().sorted((Rubric r1, Rubric r2) -> r1.getOrder().compareTo(r2.getOrder())).collect(Collectors.toCollection(ArrayList::new));
        return rubrics;
    }
}
import java.util.ArrayList;
import java.util.List;

import java8.util.stream.Collectors;
import java8.util.stream.StreamSupport;

public class FinantialStatement {

    private List<Rubric> values;

    public List<Rubric> getConsolidatedRubrics() {
        List<Rubric> rubrics = StreamSupport.stream(values)
                .sorted((Rubric r1, Rubric r2) -> r1.getOrder().compareTo(r2.getOrder()))
                .collect(Collectors.toCollection(ArrayList::new));
        return rubrics;
    }
}
import java.util.ArrayList;
导入java.util.List;
导入java8.util.stream.collector;
导入java8.util.stream.StreamSupport;
公开课财务报表{
私有列表值;
公共列表GetConsolidatedRubics(){
列表准则=StreamSupport.stream(值)
.sorted((准则r1,准则r2)->r1.getOrder().compareTo(r2.getOrder()))
.collect(收集器.toCollection(ArrayList::new));
返回准则;
}
}
编辑

显然,您不能使用
java.util.Collection#stream()
,因为

a) 是一种仅存在于Java 8和

b) 它混合在一起
java.util.stream.Collectors
和您的(正确的) java8.util.stream.collector导入

(免责声明:我是streamsupport的维护者)