今天看书,讲道JDK8中新增了lambda,可以实现方法引用
例如:System.out::print 等于 System.out.print
但是我还是没有明白,这样做的意义是什么呢?
书中有个练习题
1,使用java.io.File中的listFiles(FileFilter)和isDirectory()这两个方法实现找出某个文件夹下所有子文件夹的功能。
2,使用lambda表达式来代替FileFilter
3,再将它改写为一个方法引用
1和2我基本上完成了,大家可以看代码
public static void main(String[] args) {
List<File> totalFiles = getSonFiles(new File("F:\\"));
}
static List<File> getSonFiles(File f){
List<File> fileList = new ArrayList<>();
File[] files = f.listFiles(file -> file.isDirectory());
if(files == null || files.length == 0){
return fileList;
}
for (File currentFile: files) {
fileList.add(currentFile);
}
List<File> currentSonFiles = new ArrayList<>();
for (File currentFile: fileList) {
currentSonFiles.addAll(getSonFiles(currentFile));
}
fileList.addAll(currentSonFiles);
return fileList;
}
不知道这块代码有没有还需要改进的地方
至于3我真的是没有明白,到底该怎么改呢?
求大神带一下!!!
杨__羊羊
相关分类