====== Java8 Lambda Use cases ======
===== Runnable =====
Instead using:
public class RunnableTest {
public static void main(String[] args) {
System.out.println("=== RunnableTest ===");
Runnable r = new Runnable(){
@Override
public void run(){
System.out.println("Hello world one!");
}
};
r.run();
}
}
Use:
public class RunnableTest {
public static void main(String[] args) {
System.out.println("=== RunnableTest ===");
Runnable r = () -> System.out.println("Hello world two!");
r.run();
}
}
===== Listener =====
Java Way
public class ListenerTest {
public static void main(String[] args) {
JButton testButton = new JButton("Test Button");
testButton.addActionListener(new ActionListener(){
@Override public void actionPerformed(ActionEvent ae){
System.out.println("Click Detected by Anon Class");
}
});
// Swing stuff
JFrame frame = new JFrame("Listener Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(testButton, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
}
Lambda Way
public class ListenerTest {
public static void main(String[] args) {
JButton testButton = new JButton("Test Button");
testButton.addActionListener(e -> System.out.println("Click Detected by Lambda Listner"));
// Swing stuff
JFrame frame = new JFrame("Listener Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(testButton, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
}
===== Improve Code =====
Java Way
public class Person {
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Hello from thread");
}
}).start();
Lambda Way
new Thread(
() -> System.out.println("Hello from thread")
).start();
===== Foreach =====
Define:
List list = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
Java Way
for(Integer n: list) {
System.out.println(n);
}
Lambda Way
list.forEach(n -> System.out.println(n));
Java8 Way
list.forEach(System.out::println);
===== Foreach and Multiply =====
List list = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
Java Way
for(Integer n : list) {
int x = n * n;
System.out.println(x);
}
Lambda Way
list.stream().map((x) -> x*x).forEach(System.out::println);
===== MapReduce in java=====
List list = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
Java Way
int sum = 0;
for(Integer n : list) {
int x = n * n;
sum = sum + x;
}
System.out.println(sum);
Lambda Way
int sum = list.stream().map(x -> x*x).reduce((x,y) -> x + y).get();
System.out.println(sum);