java实用方法整理(二十七)——PriorityQueue实现最小堆和最大堆

1,PriorityQueue默认实现的是最小堆

import java.util.PriorityQueue;

/**
* @author Manduner_TJU
* @version 创建时间:2019年4月10日下午4:51:00
*/
public class Test9 {
	public static void main(String[] args) {
		int[] a = {45,36,18,53,72,30,48,93,15,35};
		//1,默认实现的是最小堆,元素按照natural ordering排序(自然排序,例如,数字的从小到大)
		PriorityQueue minHeap = new PriorityQueue();
		
		for(int i=0;i

2,通过比较器实现最大堆

import java.util.Comparator;
import java.util.PriorityQueue;

/**
* @author Manduner_TJU
* @version 创建时间:2019年4月10日下午4:51:00
*/
public class Test9 {
	public static void main(String[] args) {
		int[] a = {45,36,18,53,72,30,48,93,15,35};
		//2,通过比较器排序,实现最大堆
		PriorityQueue maxHeap = new PriorityQueue(new Comparator() {

			@Override
			public int compare(Integer o1, Integer o2) {
				/**以下是对比较器升序、降序的理解.
				 *(1) 写成return o1.compareTo(o2) 或者 return o1-o2表示升序
				 *(2) 写成return o2.compareTo(o1) 或者return o2-o1表示降序
				 */
				return o2.compareTo(o1);
			}
			
		}) ;
		
		for(int i=0;i

 

你可能感兴趣的:(Java学习笔记)