📘 Premium Read: Access my best content on Medium member-only articles — deep dives into Java, Spring Boot, Microservices, backend architecture, interview preparation, career advice, and industry-standard best practices.
✅ Some premium posts are free to read — no account needed. Follow me on Medium to stay updated and support my writing.
🎓 Top 10 Udemy Courses (Huge Discount): Explore My Udemy Courses — Learn through real-time, project-based development.
▶️ Subscribe to My YouTube Channel (172K+ subscribers): Java Guides on YouTube
Source Code on GitHub
Java 8 Lambda Expressions Syntax
(argument-list) -> {body}
- Argument-list: It can be empty or non-empty as well.
- Arrow-token: It is used to link arguments-list and body of expression.
- Body: It contains expressions and statements for the lambda expression.
Useful Java Lambda Expressions Examples
1. Java Simple Lambda Expression Example
interface Drawable{
public void draw();
}
public class LambdaExpressionExample {
public static void main(String[] args) {
int width=10;
//with lambda
Drawable withLambda=()->{
System.out.println("Drawing "+width);
};
withLambda.draw();
}
}
Drawing 10
2. Java Lambda Expression Example: No Parameter
interface Sayable {
public String say();
}
public class JLEExampleNoParameter {
public static void main(String[] args) {
// without lambda expression
Sayable sayable = new Sayable() {
@Override
public String say() {
return "Return something ..";
}
};
sayable.say();
// with lambda expression
Sayable withLambda = () -> {
return "Return something ..";
};
withLambda.say();
}
}
3. Java Lambda Expression Example: Single Parameter
interface Printable {
void print(String msg);
}
public class JLEExampleSingleParameter {
public static void main(String[] args) {
// without lambda expression
Printable printable = new Printable() {
@Override
public void print(String msg) {
System.out.println(msg);
}
};
printable.print(" Print message to console....");
// with lambda expression
Printable withLambda = (msg) -> System.out.println(msg);
withLambda.print(" Print message to console....");
}
}
Print message to console....
Print message to console....
4. Java Lambda Expression Example: Multiple Parameters
interface Addable{
int add(int a,int b);
}
public class JLEExampleMultipleParameters {
public static void main(String[] args) {
// without lambda expression
Addable addable = new Addable() {
@Override
public int add(int a, int b) {
return a + b;
}
};
addable.add(10, 20);
// with lambda expression
// Multiple parameters in lambda expression
Addable withLambda = (a,b)->(a+b);
System.out.println(withLambda.add(10,20));
// Multiple parameters with data type in lambda expression
Addable withLambdaD = (int a,int b) -> (a+b);
System.out.println(withLambdaD.add(100,200));
}
}
5. Java Lambda Expression Example: Multiple Statements
interface IAvarage{
double avg(int[] array);
}
public class JLEExampleMultipleStatements {
public static void main(String[] args) {
// without lambda expression, IAvarage implementation using anonymous class
IAvarage avarage = new IAvarage() {
@Override
public double avg(int[] array) {
double sum = 0;
int arraySize = array.length;
System.out.println("arraySize : " + arraySize);
for (int i = 0; i < array.length; i++) {
sum = sum + array[i];
}
System.out.println("sum : " + sum);
return (sum/ arraySize);
}
};
int[] array = {1,4,6,8,9};
System.out.println(avarage.avg(array));
// with a lambda expression
// You can pass multiple statements in lambda expression
IAvarage withLambda = (withLambdaArray) -> {
double sum = 0;
int arraySize = withLambdaArray.length;
System.out.println("arraySize : " + arraySize);
for (int i = 0; i < withLambdaArray.length; i++) {
sum = sum + withLambdaArray[i];
}
System.out.println("sum : " + sum);
return (sum/ arraySize);
};
int[] withLambdaArray = {1,4,6,8,9};
System.out.println(withLambda.avg(withLambdaArray));
}
}
6. Java Lambda Expression Example: Creating Thread
public class JLEExampleRunnable { public static void main(String[] args) { //without lambda, Runnable implementation using anonymous class Runnable runnable = new Runnable() { @Override public void run() { System.out.println(" Runnable example without lambda exp."); } }; Thread thread = new Thread(runnable); thread.start(); //with lambda Runnable withLambda = () -> System.out.println(" Runnable example with lambda exp."); Thread thread1 = new Thread(withLambda); thread1.start(); } }
Runnable example without lambda exp.
Runnable example with lambda exp.
7. Java Lambda Expression Example: Comparator
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class JLEComparatorExample {
public static void main(String[] args) {
List<Person> listOfPerson = new ArrayList<Person>();
listOfPerson.add(new Person("abc", 27));
listOfPerson.add(new Person("mno", 26));
listOfPerson.add(new Person("pqr", 28));
listOfPerson.add(new Person("xyz", 27));
// Without lambda expression.
// Sort list by age
Comparator<Person> comparator = new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
return o1.getAge() - o2.getAge();
}
};
Collections.sort(listOfPerson, comparator);
System.out.println(" sort persons by age in ascending order");
for (Person person : listOfPerson) {
System.out.println(" Person name : " + person.getName());
}
// With lambda expression.
// Sort list by age
Collections.sort(listOfPerson, (Person o1, Person o2) -> {
return o1.getAge() - o2.getAge();
});
// Use forEach method added in java 8
System.out.println(" sort persons by age in ascending order");
listOfPerson.forEach(
(person) -> System.out.println(" Person name : " + person.getName()));
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
8. Java Lambda Expression Example: Event Listener
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class LambdaEventListenerExample {
public static void main(String[] args) {
JTextField tf=new JTextField();
tf.setBounds(50, 50,150,20);
JButton b=new JButton("click");
b.setBounds(80,100,70,30);
// lambda expression implementing here.
b.addActionListener(e-> {tf.setText("hello swing");});
JFrame f=new JFrame();
f.add(tf);f.add(b);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLayout(null);
f.setSize(300, 200);
f.setVisible(true);
}
}
9. Iterate ArrayList with forEach() method + Lambda Expression Example
package net.javaguides.collections; import java.util.Arrays; import java.util.Iterator; import java.util.List; /** * * Java program to demonstrate different ways to Iterate over an ArrayList in Java * @author Ramesh Fadatare * */ public class DifferentWaysListIterateProgram { public static void main(String...args) { List < String > courses = Arrays.asList("C", "C++", "Core Java", "J2EE", "Spring", "Hibernate", "Python"); // JDK 8 streaming example lambda expression courses.stream().forEach(course -> printCourse(course)); // JDK 8 streaming example method reference courses.stream().forEach(DifferentWaysListIterateProgram::printCourse); // JDK 8 for each with lambda courses.forEach(course -> printCourse(course)); // JDK 8 for each courses.forEach(DifferentWaysListIterateProgram::printCourse); } // common method to print course private static void printCourse(String course) { System.out.println("course name :: " + course); } }
10. Iterate HashSet with forEach() method + Lambda Expression Example
package net.javaguides.collections; import java.util.HashSet; import java.util.Iterator; import java.util.Set; /** * Java program to demonstrate different ways to iterate over a Set in Java * * @author Ramesh Fadatare * */ public class DifferentWaysSetIterateProgram { public static void main(String...args) { Set < String > courses = new HashSet < String > (); courses.add("Java"); courses.add("C"); courses.add("C++"); courses.add("Python"); courses.add("Scala"); // JDK 8 streaming example lambda expression courses.stream().forEach(course -> coursePrinter(course)); // JDK 8 streaming example method reference courses.stream().forEach(DifferentWaysSetIterateProgram::coursePrinter); // JDK 8 for each with lambda courses.forEach(course -> coursePrinter(course)); // JDK 8 for each courses.forEach(DifferentWaysSetIterateProgram::coursePrinter); } // common method to print course private static void coursePrinter(String course) { System.out.println("course name :: " + course); } }
11. Iterate HashMap with forEach() method + Lambda Expression Example
package net.javaguides.collections; import java.util.HashMap; import java.util.Iterator; import java.util.Map; /** * This program demonstrate different ways to iterate over a Map in Java * * @author Ramesh Fadatare * */ public class DifferentWaysMapIterateProgram { public static void main(String...args) { Map < Integer, String > coursesMap = new HashMap < Integer, String > (); coursesMap.put(1, "C"); coursesMap.put(2, "C++"); coursesMap.put(3, "Java"); coursesMap.put(4, "J2EE"); coursesMap.put(5, "Python"); coursesMap.put(6, "Scala"); // JDK 8 for each with lambda coursesMap.forEach((k, v) -> coursePrinter(k, v)); // JDK 8 for each method reference coursesMap.forEach(DifferentWaysMapIterateProgram::coursePrinter); } // common method to print map key value private static void coursePrinter(Integer number, String brand) { System.out.println("course no : " + number + " and course name : " + brand); } }
Excelent post, but there is an issue in the example on point 6. "Java Lambda Expression Example: Creating Thread"
ReplyDelete//with lambda
Runnable withLambda = () -> System.out.println(" Runnable example with lambda exp.");
Thread thread1 = new Thread(runnable);
thread1.start();
Replace witth:
//with lambda
Runnable withLambda = () -> System.out.println(" Runnable example with lambda exp.");
Thread thread1 = new Thread(withLambda);
thread1.start();
Yes fixed it. Thanks for reporting.
Delete