Collections.sort in java for any class

2019-07-18 11:36发布

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

5条回答
姐就是有狂的资本
2楼-- · 2019-07-18 12:07

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

查看更多
啃猪蹄的小仙女
3楼-- · 2019-07-18 12:19

You can either implement Comparable or you can pass a Comparator to Collections.sort

查看更多
别忘想泡老子
4楼-- · 2019-07-18 12:25

You need to write a Comparator - typically you just override the compare method which returns an int, +ve, 0 or -ve to indicate "greater than", "the same" or "less than" for whatever definitions of these you choose. See another of my answers for an example.

查看更多
Explosion°爆炸
5楼-- · 2019-07-18 12:29

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

查看更多
Root(大扎)
6楼-- · 2019-07-18 12:34

Let your class implement the Comparable interface

查看更多
登录 后发表回答