How to Use the Comparator.comparing Method in Java 8
See Java: Tips and Tricks for similar articles.The Comparator.comparing
method, introduced in Java 8, returns a Comparator object that will use the specified field as the sort key. The Comparator
interface is a functional interface in Java 8, and the method implemented is the compare
method. Therefore, the compare
method is implemented by the comparing
method using the specified key. To learn how to use the Comparator.comparing
method, follow these seven steps.
- Open your text editor and create a new file that will contain the musical instrument class that ultimately will be sorted. Type in the following Java statements:
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:
public class MusicalInstrument { private String name; private String type; public MusicalInstrument(String name, String type) { setName(name); setType(type); } public String getName() { return name; } public void setName (String name) { this.name=name; } public String getType() { return type; } public void setType (String type) { this.type=type; } public String toString() { return name + " is a " + type + " instrument"; } }
- Save your file as
MusicalInstrument.java
. - 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.
- Open your text editor and create the Java program that will demonstrate the use of the
Comparator.comparing
method. Type in the following Java statements: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 ArrayList will be sorted byimport java.util.stream.*; import java.util.*; public class UseComparatorcomparingMethod { 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 sorted by name:"); Collections.sort(musicalInstruments, Comparator.comparing((MusicalInstrument instrument) -> instrument.getName())); musicalInstruments.stream().forEach(System.out::println); System.out.println("Musical instruments in the collection sorted by type:"); Collections.sort(musicalInstruments, Comparator.comparing((MusicalInstrument instrument) -> instrument.getType())); musicalInstruments.stream().forEach(instrument->System.out.println(instrument)); } } Collections.sort
. This static method accepts an ArrayList and a Comparator object. Note that the Comparator object will be returned by thecomparing
method. The parameter passed to thecomparing
method is a lambda expression that determines the sort field. The musical instrument name is passed to the firstcomparing
method and the musical instrument type is passed to the secondcomparing
method. I have highlighted thecomparing
method calls below: - Save your file as
UseComparatorcomparingMethod.java
. - 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.
- 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 musical instruments sorted first by name and then by type.
Related Articles
- How to Check Object Type in Java
- How to Create a Jar File in Java
- How to Compile Packages in Java
- How to Throw an Exception in Java
- How to Create an Exception Class in Java
- How to Use the super Keyword to Call a Base Class Constructor in Java
- How to Use the Comparator.comparing Method in Java 8 (this article)
- How to Use System.in in Java
- How to Call an Interface Method in Java
- How to Add a Time Zone in the Java 8 Date/Time API
- How to Rethrow an Exception in Java
- How to Use the instanceof Operator with a Generic Class in Java
- How to Instantiate an Object in Java
- How to Filter Distinct Elements from a Collection in Java 8
- How to Create a Derived Class in Java
- How to Skip Elements with the Skip Method in Java 8
- How to Create a Java Bean
- How to Implement an Interface in Java
- How to Compare Two Objects with the equals Method in Java
- How to Set PATH from JAVA_HOME
- How to Prevent Race Conditions in Java 8
- How to Write a Block of Code in Java
- How to Display the Contents of a Directory in Java
- How to Group and Partition Collectors in Java 8
- How to Create a Reference to an Object in Java
- How to Reduce the Size of the Stream with the Limit Method in Java 8
- How to Write an Arithmetic Expression in Java
- How to Format Date and Time in the Java 8 Date/Time API
- How to Use Comparable and Comparator in Java
- How to Break a Loop in Java
- How to Use the this Keyword to Call Another Constructor in Java
- How to Write a Unit Test in Java
- How to Declare Variables in Java
- How to Override Base Class Methods with Derived Class Methods in Java
- How to Use Serialized Objects in Java
- How to Write Comments in Java
- How to Implement Functional Interfaces in Java 8
- How to Write Type Parameters with Multiple Bounds in Java
- How to Add Type and Repeating Annotations to Code in Java 8
- How to Use Basic Generics Syntax in Java
- How to Map Elements Using the Map Method in Java 8
- How to Work with Properties in Java
- How to Write while and do while Loops in Java
- How to Use the finally Block in Java
- How to Write for-each Loops in Java
- How to Create a Method in Java
- How to Continue a Loop in Java
- How to Handle Java Files with Streams
- How to Create an Interface Definition in Java
- How Default Base Class Constructors Are Used with Inheritance