Java – sort the (array) list in a specific order
•
Java
I have a list of objects that I want to sort in a defined order
Before sorting: After sorting: orange white white blue green yellow brown orange yellow black black brown ... ...
Is there such a simple way?
Edit:
I have to add a more complex... What if there can be more colors with the same name / cardinality? For the former, whitex, Whitey, whitez, blueA, blueB,... All whites must appear first than all yellow, not all yellow Is it still possible to solve this problem with a comparator? (I can't imagine...)
Solution
Yes, you can create a comparator to create sorting policies, or define the natural order of classes that implement comparable
As a side note:
Examples of using Comparators:
class MyClass { private Color color; private String someOtherProperty; public static final Comparator<MyClass> colorComparator = new MyComparator(); //getter and setter static class MyComparator implements Comparator<MyClass>{ @Override public int compare(MyClass o1,MyClass o2) { // here you do your business logic,when you say where a color is greater than other } } }
And in the client code
Example:
List<MyClass> list = new ArrayList<>(); //fill array with values Collections.sort(list,MyClass.colorComparator );
Read more: collections #sort (..)
If you want to define the natural order of your classes, just define
public class MyClass implements Comparable<MyClass>{ @Override public int compareTo(MyClass o) { // do business logic here } }
And in the client code:
Collections.sort(myList); // where myList is List<MyClass>
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码