【发布时间】:2018-05-29 01:32:16
【问题描述】:
我很难理解这个 toArray 函数。有人可以在不使用 lambda 箭头或双 :: 冒号方法参考的情况下提供此方法的完整上下文吗?
如果我知道这个toArray 代码的完整非缩短版本应该如何看待并理解程序正在尝试做什么而不是记住某些表达式,这将更有帮助。它更多的是关于编程素养。
这里的完整上下文是我正在尝试使用预设数据从另一个类转换流阅读器。读者的数据被转换为Stream<String> 方法,我的目标是将streamData 转换为String 数组。
public List<WordCountResult> countWordOccurrences(BufferedReader reader) throws Exception {
try {
// word, occurrences
Map<String, Integer> data = new TreeMap<>(); //TreeMap arranges items by natural order.
Stream<String> streamData = reader.lines();
String[] stringArray;
stringArray = streamData.toArray(size -> new String[size]);
}
catch(Exception ex1) {
System.out.println("Processing error.");
}
}
【问题讨论】:
-
documentation 表示“返回一个包含该流元素的数组,使用提供的生成器函数分配返回的数组”
-
如果您想了解 lambda 在“常规代码”中的转换方式以及其他方式,您可以尝试 IntelliJ。此编辑器可识别可重写为 lambda 的部分代码,并可将 lambda 转换回 java8 之前的版本。