Monday, May 25, 2020

Lambda Expression & Streams - Data Manipulation - Learning-2

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

Reading and Writing JSON to a file

Why GSON? Nowadays JSON is more frequently used for data representation. There are a lot of libraries to convert java objects into JSO...