Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Collections.sort in java for any class

Java class problem

In C++ if we add some class objects to vector , we can sort the list by specifying some functions like operator<() or operator==() or operator!=.

What do we need to do in java for Collections.sort to work according to our wishes

like image 946
Ashish Negi Avatar asked Jan 25 '26 07:01

Ashish Negi


2 Answers

You implement Comparable<T>.

From the docs for Collections.sort:

Sorts the specified list into ascending order, according to the natural ordering of its elements. All elements in the list must implement the Comparable interface. Furthermore, all elements in the list must be mutually comparable (that is, e1.compareTo(e2) must not throw a ClassCastException for any elements e1 and e2 in the list).

Alternatively, if you don't control the element type (e.g. you've got a List<String> and you want to apply a custom sort order) you implement Comparator<T> and pass that in as an extra parameter to Collections.sort

like image 185
Jon Skeet Avatar answered Jan 26 '26 19:01

Jon Skeet


Your class needs to implement the Comparable interface in order for sort to work.

like image 26
Dirk Avatar answered Jan 26 '26 21:01

Dirk