Saturday, October 5, 2024

How to find the first element in Stream in Java 8? findFirst() Example

In Java 8, you can use the Stream.findFirst() method to get the first element of Stream in Java. This is a terminal operation and is often used after applying several intermediate operations e.g. filter, mapping, flattening, etc. For example, if you have a List of String and you want to find the first String whose length is greater than 10, you can use the findFirst() method along with stream() and filter() to get that String. The stream() method gets the Stream from a List, which then allows you to apply several useful methods defined in the java.util.Stream class like filter(), map(), flatMap() etc.

Monday, April 8, 2024

How to Convert a Lambda Expression to Method Reference in Java 8?

If you have been coding in Java 8 then you may know that using method reference in place of lambda expression makes your code more readable, hence it is advised to replace lambda expression with method reference wherever possible. But, the big question is, how do you find whether you can replace a lambda with method reference? Yes, it's not that easy, especially if you have been using Java 8 only for a couple of months and struggling to get the functional programming concepts and idioms sorted in your head. Sometimes, IDEs like IntelliJ IDEA and Eclipse does offer some hints to convert lambda expression to method reference but it does make sense to learn the logic behind it, otherwise, it won't make sense.

Thursday, April 27, 2023

How to declare a method which takes a lambda expression in Java 8? Example Tutorial

You may have seen lot of examples of how to use lambda expression in Java 8 e.g. to replace anonymous class, to implement Runnable or to implement Comparator but there are hardly any examples of teaching you to how to declare your own user defined method which can accept lambda expression. In this tutorial, I will try to bridge that gap. Actually, a method doesn't know whether you are passing an instance or a lambda expression to it, all you need to remember is that lambda expression is of SAM type in Java 8. Which means, you can pass lambda expression in place of an interface which has just one abstract method.