28th Jan

Java中Comparable和Comparator区别小结

https://www.cnblogs.com/xujian2014/p/5215082.html

 

Java中的Comparable和Comparator到底该怎么用看完就全明白了

https://baijiahao.baidu.com/s?id=1709295295461147051&wfr=spider&for=pc

队首是最小值

先给大家介绍一下Java中的优先级队列PriorityQueue,这是一个实现了Queue接口的类,它的功能是add()进入一个个同类型对象,然后它会在内部进行操作,保证每次头删的时候都是队列中的最小的元素。既然要给出队列中的最小值,那么PriorityQueue在每次插入之后都会对其内部元素进行排序,才能保证队首是整个队列的最小值。

 

它会两两对队列内的元素进行比较,谁大谁小是根据这个compareTo方法的返回值决定,比如PriorityQueue开始比较时先从例子中的a对象开始,那么它会再依次向a的compareTo()方法中传入b,c,d对象,这样比下来就知道了a和其他三个对象谁大谁小 ,我们要自己重写这个方法来规定是依据this的什么属性和传入对象的什么属性作比较的。
拿Student类来说它的属性有姓名,年级,总成绩三个,我们可以根据总成绩totalScore来做比较依据重写compareTo()方法。成绩高的的Student对象大,成绩低的对象小,这里比较绕,大家还是要明确我们Student类虽然实现了Comparable接口有了比较能力,能插入PriorityQueue,但是想让程序知道哪个对象大哪个对象小全是根据compareTo()方法的返回值看的。
Java默认的是compareTo()返回值为负则表示传入的o对象大,返回0表示一样大,正数表示this对象大。

posted @ 2023-01-29 06:04  叶漾知  阅读(9)  评论(0)    收藏  举报