Introduction
Apache Commons Collections provides a wealth of sorting tools to sort the elements in the collection.These tools support sorting various types of sets, including lists, sets and arrays.
1. Use Comparator for sorting
The Comparator interface defines a method for comparing two objects.Apache Commons Collections provides multiple practical comparators, as well as some auxiliary methods to help create and use Comparators.
1.1. ComparableComparator
ComparableComparetor is a comparator that compares the object of the Comparable interface.It can be used to sort the elements in the collection of the Comparable interface.
Example code:
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
Collections.sort(list, ComparableComparator.INSTANCE);
System.out.println (list); // Output: [Apple, Banana, Cherry]
1.2. ReverseComparator
Reversecomparator is a decorator for the order of reverse comparator.It can be used to sort a normal Comparator in the opposite order.
Example code:
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(3);
list.add(2);
Collections.sort(list, ReverseComparator.INSTANCE);
System.out.println (list); // Output: [3, 2, 1]
2. Use the custom comparator for sorting
In addition to using Apache Commons Collections, you can also use a custom comparator to sort the set.
2.1. Anonymous internal class comparator
You can use anonymous internal class to create a custom comparator.The anonymous internal class can directly define and implement the compare method in the code and implement the comparator interface.
Example code:
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
Comparator<String> lengthComparator = new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return Integer.compare(s1.length(), s2.length());
}
};
Collections.sort(list, lengthComparator);
System.out.println (list); // Output: [Apple, Cherry, Banana]
2.2. Lamdba expression comparative
Java 8 introduced Lambda expressions, which can more concisely define comparators.
Example code:
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
Comparator<String> lengthComparator = (s1, s2) -> Integer.compare(s1.length(), s2.length());
Collections.sort(list, lengthComparator);
System.out.println (list); // Output: [Apple, Cherry, Banana]
3. Use special sort order
Apache Commons Collections also provides some special sorting tools for sorting in a specific order.
3.1. NullComparator
NullComparetor is used to process NULL values in sorting.You can specify the order order of NULL, for example, put the NULL value at the forefront or last.
Example code:
List<String> list = new ArrayList<>();
list.add("apple");
list.add(null);
list.add("banana");
list.add(null);
Comparator<String> nullsFirstComparator = new NullComparator<>(true, false);
Collections.sort(list, nullsFirstComparator);
System.out.println(list); // 输出: [null, null, apple, banana]
3.2. TransformerComparator
TransformerComparator can convert elements through a transformer before sorting.This can be used to make some pre -processing elements before sorting.
Example code:
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
Comparator<String> upperCaseComparator = new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.toUpperCase().compareTo(s2.toUpperCase());
}
};
Transformer<String, String> upperCaseTransformer = new Transformer<String, String>() {
@Override
public String transform(String input) {
return input.toUpperCase();
}
};
Comparator<String> transformedComparator = new TransformerComparator<>(upperCaseTransformer, upperCaseComparator);
Collections.sort(list, transformedComparator);
System.out.println (list); // Output: [Apple, Banana, Cherry]
In summary, Apache Commons Collections provides a variety of sorting tool classes that can easily sort the elements in the set.Using these tool classes can easily sort the sets of various data types, and can be customized and sorted by custom sorting and special order as needed.