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对象大。