Let us see another example of Lambda expressions using the concept of
Listing of Directories using Java Files.
Without Lambda Expression
private void listDirectories() {
File[] directories = new File(".").listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isDirectory();
}
});
}
Here we create the FileFilter object and override the accept method based
on our criteria.
With Lambda Expression
private void listDirectoriesUsingLambda() {
File[] directories = new File(".").listFiles(File::isDirectory);
}
Instead of creating the FileFilter Object simply call the required API.
"File::isDirectory" is one of the lambda expression to check if the given
file is a directory or not.
In the method-1, object is passed and verified and in method-2 the
functionallity is passed and it acts on each object in the list.
Full code is given below
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.stream.Stream;
public class FileOperations {
public FileOperations() {
}
private void listDirectories() {
File[] directories = new File(".").listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isDirectory();
}
});
printFiles(directories);
}
private void listDirectoriesUsingLambda() {
File[] directories = new File(".").listFiles(File::isDirectory);
printFiles(directories);
}
private void printFiles(File[] files) {
Stream<File> fileStream = Stream.of(files);
fileStream.forEach(x-> {
try {
System.out.println(x.getCanonicalPath());
} catch (IOException e) {
e.printStackTrace();
}
});
}
public static void main(String[] args) {
FileOperations fileOperations = new FileOperations();
System.out.println("Listing Directories without lambda expression");
System.out.println("---------------------------------------------");
System.out.println("");
fileOperations.listDirectories();
System.out.println("");
System.out.println("Listing Directories with lambda expression");
System.out.println("---------------------------------------------");
System.out.println("");
fileOperations.listDirectoriesUsingLambda();
}
}
No comments:
Post a Comment