Home » Tag Archives: Lambdas

Tag Archives: Lambdas

Java 8: Converting Anonymous Classes to Lambda Expressions

Refactoring anonymous classes (that implement one single method) to lambda expressions, makes your code more succint and readable. For example, here’s an anonymous class for a Runnable and its lambda equivalent: // using an anonymous class Runnable r = new Runnable() { @Override public void run() { System.out.println("Hello"); } }; // using a lambda expression Runnable r2 = () -> ...

Read More »

Simplifying nested loops with Java 8 Lambdas

This is just a quick tip for everyone who often has to work with multi dimensional arrays in Java 8 (or newer). In this case you might often end with code similar to this: float[][] values = ... for (int i = 0; i < values.length; i++) {   for (int k = 0; k < values[i].length; k++) {     float value = values[i][k];     // do something with i, k and value   } } If you are lucky you can replace the loops with for-each loops. However, often the indices are required for ...

Read More »

Lambda of Lambda, if/else from an Optional

So I got frustrated with two limitations of the Optional interface in JDK 8. The first problem is that there is no obvious way to perform an else operation in a block as there is only a isPresent method unless you are using an old school if statement. The second problem is of course the old chestnut that even if ...

Read More »

Decorator Design Pattern using lambdas

With the advent of lambdas in Java we now have a new tool to better design our code. Of course the first step is using streams, method references and other neat features introduced in Java 8. Going forward I think the next step is to revisit the well established Design Patterns and see them through the functional programming lenses. For ...

Read More »

Using Java 8 Lambdas, Streams, and Aggregates

Overview In this post, we’ll take a look at filtering and manipulating objects in a Collection using Java 8 lambdas, streams, and aggregates. All code in this post is available in BitBucket here. For this example we’ll create a number of objects that represent servers in our IT infrastructure. We’ll add these objects to a List and then we’ll use ...

Read More »

Java 8 Lambda Expression for Design Patterns – Decorator Design Pattern

The Decorator pattern (also known as Wrapper) allows behavior to be added to an individual object, either statically or dynamically, without affecting the behavior of other objects from the same class. It can be considered as an alternative to subclassing. We know that subclassing adds behavior at compile time and the change affects all instances of the original class. On ...

Read More »

The Danger of Subtype Polymorphism Applied to Tuples

Java 8 has lambdas and streams, but no tuples, which is a shame. This is why we have implemented tuples in jOOλ – Java 8’s missing parts. Tuples are really boring value type containers. Essentially, they’re just an enumeration of types like these: public class Tuple2<T1, T2> { public final T1 v1; public final T2 v2; public Tuple2(T1 v1, T2 ...

Read More »

How and Why to Serialize Lambdas

Overview Serializing lambdas can be useful in a number of use cases such as persisting configuration, or as a visitor pattern to remote resources. Remote Visitors For example, so I want to access a resource on a remote Map, I can use get/put, but say I just want to return a field from the value of a Map, I can ...

Read More »

Want to take your Java skills to the next level?

Grab our programming books for FREE!

Here are some of the eBooks you will get:

  • Spring Interview QnA
  • Multithreading & Concurrency QnA
  • JPA Minibook
  • JVM Troubleshooting Guide
  • Advanced Java
  • Java Interview QnA
  • Java Design Patterns