How to Eliminate Elements Using the Filter Method in Java 8

The filter method of the Stream class introduced in Java 8 allows the developer to eliminate elements from a stream. Therefore, only the desired elements are preserved in the output stream. To learn how to eliminate elements using the filter method, follow these seven steps.

  1. Open your text editor and create a new file that will contain the musical instrument class that ultimately will be stored in a stream. Type in the following Java statements:
    public class MusicalInstrument {
    	private String name;
    	private String type;
    	public MusicalInstrument(String name, String type) {
    	public String getName() {
    		return name;
    	public void setName (String name) {;
    	public String getType() {
    		return type;
    	public void setType (String type) {
    	public String toString() {
    		return name + " is a " + type + " instrument";
    This is a straightforward Java bean that contains two properties: musical instrument name (e.g., trumpet) and type of musical instrument (e.g., brass). I have highlighted the two properties in the image below:
    Java Source for Musical Instrument
  2. Save your file as
  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 Source for Musical Instrument
  4. Open your text editor, create the Java program that will create the stream, and apply the filter method. Type in the following Java statements:
    	import java.util.*;
    	public class UseFilterMethod {
    	private static List musicalInstruments=new ArrayList<>();
    	static {
    		musicalInstruments.add(new MusicalInstrument("Trumpet","brass"));
    		musicalInstruments.add(new MusicalInstrument("Tuba","brass"));
    		musicalInstruments.add(new MusicalInstrument("Timpani","percussion"));
    		musicalInstruments.add(new MusicalInstrument("Piano","keyboard"));
    	public static void main (String args[]) {
    		System.out.println("Musical instruments in the collection that start with \"T\":");
    		.forEach(instrument->System.out.println(instrument) );
    		System.out.println("Percussion musical instruments in the collection that start with \"T\":");
    		.filter(instrument->instrument.getName().startsWith("T") && instrument.getType().equals("percussion"))
    		.forEach(instrument->System.out.println(instrument)  );
    		System.out.println("Brass musical instruments in the collection  along with keyboard instruments:");
    		.filter(instrument->instrument.getName().startsWith("T") || instrument.getType().equals("keyboard"))
    		.forEach(instrument->System.out.println(instrument)  );
    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. The array list is converted to a stream and three cases are presented; each with its own filter method and appropriate predicate. The filter will be applied to remove elements that do not qualify according to the search criteria. Note that the filter predicates use the standard Java OR operator (||) and AND operator (&&). Each case is preceded by a System.out.println that indicates what musical instruments will be displayed. I have highlighted the three filter methods in the image below:
    Java Source for Filter Method
  5. Save your file as
  6. 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 Filter Method
  7. You are ready to test your Java program. Type in the command to run the Java runtime launcher and hit Enter.
    Run Program with filter Method
    The output displays the three groups of musical instruments. The members of each group were determined by applying the predicates discussed earlier.
Author: Stephen Withrow

Stephen has over 30 years of experience in training, development, and consulting in a variety of technology areas including Python, Java, C, C++, XML, JavaScript, Tomcat, JBoss, Oracle, and DB2. His background includes design and implementation of business solutions on client/server, Web, and enterprise platforms. Stephen has a degree in Computer Science and Physics from Florida State University.

About Webucator

Webucator provides instructor-led training to students throughout the US and Canada. We have trained over 90,000 students from over 16,000 organizations on technologies such as Microsoft ASP.NET, Microsoft Office, Azure, Windows, Java, Adobe, Python, SQL, JavaScript, Angular and much more. Check out our complete course catalog.