我是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);
}
我将for loop
使用箭头功能(如lambda)将鞋面更改为功能格式。
listOfFiles.map((file) = > {
System.out.println("Here is file number: " + i);
});
不幸的是,它抱怨:
Cannot invoke map((<no type> file) -> {}) on the array type File[]
为什么我会收到此错误?我该如何解决呢?
我喜欢学习Lambda,所以我对foreach不感兴趣
folder.listFiles()
应该用包裹起来Optional.ofNullable
,以免引起不适NullPointerException
。null
如果给定的路径名不表示目录,或者发生I / O错误,则可以返回。
Stream.of(ofNullable(folder.listFiles()).
orElseThrow(() -> new IllegalArgumentException("It's not a directory!")))
.forEach(f -> {});
该forEach
方法可以采用以下参数:
(1)匿名班
new Consumer<File>() {
public @Override void accept(File file) {
System.out.println(file);
}
}
(2)扩展lambda表达式
(File f) -> { System.out.println(f); }
(f) -> { System.out.println(f); }
(3)简化的lambda表达式
f -> { System.out.println(f); }
f -> System.out.println(f)
(4)方法参考
System.out::println
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句