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.
Note: For int, we use Comparator.comparingInt(CustomObject::getCustomProperty)
for sorting the ArrayList based on the int property.