====== 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);