How to Filter Distinct Elements from a Collection in Java 8

See Java: Tips and Tricks for similar articles.

A collection might contain duplicate entries. What if we wanted to display the collection as distinct elements? In other words, we wish to filter the collection so that only distinct elements are displayed. This goal can be accomplished by applying the distinct method to the stream produced from the collection. To learn how to filter distinct elements from a collection, follow these four steps.

  1. Open your text editor and create the Java program that will create the stream and apply the distinct method. Type in the following Java statements:
    import java.util.stream.*;
    import java.util.*;
    public class FilterDistinctElements {
    	private static List names=new ArrayList<>();
    	static {
    		names.add("Stephen");
    		names.add("Regina");
    		names.add("Edward");
    		names.add("Miguel");
    		names.add("George");
    		names.add("Brad");
    		names.add("Jose");
    		names.add("Edward");
    		names.add("George");
    	}
    	public static void main (String args[]) {
    		System.out.println("Collection without filtering distinct elements: ");
    		names.stream().forEach(System.out::println);
    		System.out.println("Collection filtering distinct elements: ");
    		names.stream().distinct().forEach(System.out::println);
    	}
    }
    The stream will be created from the ArrayList that is defined on line 4. Note that a static block is used to add elements to the ArrayList. A static block is executed one time when the program is loaded into memory. Note that the ArrayList contains duplicate names (e.g., "George"). The program will remove the duplicates by applying the distinct method. Prior to that operation, the program displays all names in the collection. I have highlighted the distinct method in the image below:Java Source for Distinct Method
  2. Save your file as FilterDistinctElements.java.
  3. Open a command prompt and navigate to the directory containing your new Java program. Then type in the command to compile the source and hit Enter.Compile Program with Distinct Method
  4. You are ready to test your Java program. Type in the command to run the Java runtime launcher and hit Enter. The output displays the collection before and after applying the distinct method to remove duplicate names.Run Program with Distinct Method