How to Filter Distinct Elements from a Collection in Java 8

  • google plus

In Brief...

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.

Take our Introduction to Java Training course for free.

See the Course Outline and Register

Instructions

  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

Author: Stephen Withrow

Stephen has over 30 years' experience in training, development, and consulting in a variety of technology areas including Java, C, C++, XML, JavaScript, AJAX, Tomcat, JBoss, Oracle, and DB2. His background includes design and implementation of business solutions on client/server, Web, and enterprise platforms. Stephen is a published writer in both technical and non-technical endeavors. Stephen received an undergraduate degree in Computer Science and Physics from Florida State University.

Discuss