gpt4 book ai didi

java - StreamSupport 收集器和 Java 7

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:35:19 25 4
gpt4 key购买 nike

我正在尝试使用 StreamSupport为了探索 Java 7 上的流。我将 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;
}
}

我收到以下错误:

Type mismatch: cannot convert from Collector<Object,capture#1-of
?,Collection<Object>> to Collector<? super Rubric,A,R>

我尝试应用 Eclipse 提出的提示

Add cast to '(Collector<? super Rubric, A, R>)'

但是并没有解决问题。

有人知道吗?谢谢。

最佳答案

streamsupportjava.util.Collection 接收 java8.util.stream.Stream 的入口点主要是

1) java8.util.stream.StreamSupport#stream

2) java8.util.stream.StreamSupport#parallelStream

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

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;
}
}

编辑:

显然你不能使用 java.util.Collection#stream() 因为那样

a) is a method that only exists in Java 8 and

b) it mingles java.util.stream.Collectors with your (correct) java8.util.stream.Collectors import

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

关于java - StreamSupport 收集器和 Java 7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44078976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com