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.