您的位置:首页 > 其它

comparable v comparator

2011-10-29 11:12 113 查看
Java sorting - comparable v comparator

In Java, you can sort objects that implement the Collection interface, using either the comparable interface or a comparator class. What's the difference?

A Comparable interfaced class must contain a method called
compareTo
to compare two objects (one being the object on which it is called and the other being passed as a paramater) which returns an integer, negative for
a < b, positive for a > b and 0 otherwise. It must also contain an equals method, returning a boolean, on the same parameters.

A Comparator is a class in its own right, which implements the Comparator interface; that means it must contain a method called
compare (two objects as parameters) which returns a negative, zero or positive integer depensing on whether the first object is less than, equal to, or greater than the second.

If you want to sort a collection using its comparable interface, you simply call the static
Collections.sort method on it ... so if we had an ArrayList called Actable which implemented Comparable, we could write:
Collections.sort(Actable);


To sort a collection using a Comparator class, you need to pass an extra parameter into the
Collections.sortmethod - that parameter being an instance of a Comparator object. Thus:
Collections.sort(Actable, new Bynum());


So in effect, using the comparable interface gives you a default sort order of your own making, whereas the
comparator is more flexible as it allows you define a whole series of different types of sorting that can be applied to a whole lot of different types of objects.

(written 2007-02-02, updated 2007-02-05)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息