Rat*_*han 6 java average java-stream
为什么我可以average()在一个上调用方法而不在另一个上调用方法?它们不应该是等价的吗?
示例 1 - 作品
List<String> stringList = new ArrayList<>();
stringList.add("2");
stringList.add("4");
stringList.add("6");
// String array ("2","4", "6"
averageValue = stringList.stream()
.mapToInt(s -> Integer.valueOf(s))
.average()
.getAsDouble();
Run Code Online (Sandbox Code Playgroud)
示例 2 - 不编译(删除 mapToInt 调用,因为已经传递了整数流)
List<Integer> IntegerList = new ArrayList<>();
IntegerList.add(2);
IntegerList.add(4);
IntegerList.add(6);
averageValue = IntegerList.stream()
.average()
.getAsDouble();
Run Code Online (Sandbox Code Playgroud)
问题是,当我已经将整数流传递给它时,为什么我需要调用 mapToInt 方法?
有两种不同的类型:aStream<Integer>和 an IntStream。
Java 的泛型不能有仅适用于某些泛型的方法。例如,它不能拥有Stream<Integer>.average(),而不是也有Stream<PersonName>.average(),即使一般人的名字没有任何意义。
因此,Stream有一个mapToInt方法可以将其转换为IntStream,然后提供average()方法。
| 归档时间: |
|
| 查看次数: |
153 次 |
| 最近记录: |