Java Program to Sort ArrayList of Custom Objects By Property

To understand this example, you should have the knowledge of the following Java programming topics:


Example: Sort ArrayList of Custom Objects By Property

import java.util.*;

public class CustomObject {

    private String customProperty;

    public CustomObject(String property) {
        this.customProperty = property;
    }

    public String getCustomProperty() {
        return this.customProperty;
    }

    public static void main(String[] args) {

        ArrayList<Customobject> list = new ArrayList<>();
        list.add(new CustomObject("Z"));
        list.add(new CustomObject("A"));
        list.add(new CustomObject("B"));
        list.add(new CustomObject("X"));
        list.add(new CustomObject("Aa"));

        list.sort((o1, o2) -> o1.getCustomProperty().compareTo(o2.getCustomProperty()));

        for (CustomObject obj : list) {
            System.out.println(obj.getCustomProperty());
        }
    }
}

Output

A
Aa
B
X
Z

In the above program, we've defined a CustomObject class with a String property, customProperty.

We've also added a constructor that initializes the property, and a getter function getCustomProperty() which returns customProperty.

In the main() method, we've created an array list of custom objects list, initialized with 5 objects.

For sorting the list with the given property, we use list's sort() method. The sort() method takes the list to be sorted (final sorted list is also the same) and a comparator.

In our case, the comparator is a lambda which

  • takes two objects from the list o1 and o2,
  • compares the two object's customProperty using compareTo() method,
  • and finally returns positive number if o1's property is greater than o2's, negative if o1's property is lesser than o2's, and zero if they are equal.

Based on this, list is sorted based on least property to greatest and stored back to list.