【发布时间】:2017-01-16 14:02:18
【问题描述】:
我是 java 1.8 函数式编程的新手。 我有如下代码的简单循环:
File folder = new File("./src/renamer/Newaudio");
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
System.out.println("Here is file number: " + i);
}
我将使用箭头函数(如 lambda)将上面的 for loop 更改为函数格式。
listOfFiles.map((file) = > {
System.out.println("Here is file number: " + i);
});
不幸的是,它抱怨:
Cannot invoke map((<no type> file) -> {}) on the array type File[]
为什么会出现这个错误? 我该如何解决?
我喜欢学习 Lambda,所以对 foreach 不感兴趣
【问题讨论】:
-
使用
.forEach而不是.map。请注意,您可以使用Files.list(Paths.get("./src/renamer/Newaudio")).forEach(...)直接跳转到Stream API。 -
你的 lambda 中的
i是什么? -
如果您使用的是 Java 8,不要使用
File类。它已经过时了,应该休息一下。使用Path和Files。
标签: java foreach java-8 java-stream