Lambdas vs Anonymous Classes

So far in java we have seen interfaces and abstract classes, with a single abstract method, being used as function types. Their instances, known as function objects, represent functions or actions. Since JDK 1.1, the primary means of creating a function object was the anonymous class. Below is a code snippet to sort a list of strings in order … More Lambdas vs Anonymous Classes

Prefer try-with-resources to try-finally

The Java libraries include many resources that must be closed manually by invoking a close method. Examples include InputStream, OutputStream, and java.sql.Connection.  While many of these resources use finalizers as a safety net, finalizers don’t work very well.  For a long time, a try-finally statement was the best way to guarantee that a resource would be closed properly, even in the face … More Prefer try-with-resources to try-finally

Comparable vs Comparator

Comparable and Comparator both the interfaces are used to sort Collection of objects in certain order. Implementing Comparable interface allows us to achieve default or natural ordering where implementing a Comparator allow us to sort Collection in other than natural ordering.   Comparable interface imposes a total ordering on the objects of each class that … More Comparable vs Comparator

Functional Interface in Java

In Java, functional interfaces are those interfaces who has exactly one abstract method.  @FunctionalInterface is not a mandatory annotation to be used to make any interface a Functional Interface. Its just an informative annotation type used to indicate that an interface type declaration is intended to be a functional interface. Since default methods have an implementation, they are … More Functional Interface in Java