前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PriorityQueue使用

PriorityQueue使用

作者头像
砖业洋__
发布2023-05-06 16:34:43
740
发布2023-05-06 16:34:43
举报
文章被收录于专栏:博客迁移同步博客迁移同步

C++默认大顶堆,java默认小顶堆

代码语言:javascript
复制
import java.util.Comparator;
import java.util.Iterator;
import java.util.PriorityQueue;
import java.util.Queue;

public class PriorityQueueTest
{
	public static class student
	{
		private String name;
		private int stu_num;
		public student(String name, int stu_num)
		{
			this.name = name;
			this.stu_num = stu_num;
		}
		public int getNum()
		{
			return stu_num;
		}
		public String getName()
		{
			return name;
		}
		public String toString()
		{
			return getName() + " " + getNum();
		}
	}
	public static void main(String[] args)
	{
/*PriorityQueue(int initialCapacity, Comparator<? super E> comparator) 
          使用指定的初始容量创建一个 PriorityQueue,并根据指定的比较器对元素进行排序。*/
/*PriorityQueue(int initialCapacity) 
          使用指定的初始容量创建一个 PriorityQueue,并根据其自然顺序对元素进行排序。*/		
		//优先级队列遍历不一定有序,但一个一个出队一定有序
		Comparator<student> order = new Comparator<student>()
				{
					public int compare(student s1, student s2)
					{
						return s1.getNum() - s2.getNum();
					}//这里不像C++有greater和less升序降序直接弄,得自己写
				};//按学号升序排列
		Queue<student> queue = new PriorityQueue<student>(11, order);
		queue.add(new student("lcy", 15170040));
		queue.add(new student("zj", 15170041));
		queue.add(new student("db", 15170039));
		queue.add(new student("xcy", 15170020));
		queue.add(new student("33y", 15170023));
		queue.add(new student("dcy", 15170088));
		queue.add(new student("hy", 15170025));
		queue.add(new student("sf", 15170031));
		while (!queue.isEmpty())
		{
			System.out.println(queue.poll());
		}
		System.out.println("====================");
		Comparator<Integer> order1 = new Comparator<Integer>()
		{
			public int compare(Integer o1, Integer o2)
			{
				return o1 - o2;
			}
		};//小顶堆,若o2-o1就是大顶堆,迭代器不一定有序,但是顺序出队一定有序
		Queue<Integer> q = new PriorityQueue<Integer>(11, order1);
		q.add(2);
		q.add(1);
		q.add(34);
		q.add(6);
		q.add(9);
		q.add(15);
		q.add(9);
		q.add(11);
		q.add(46);
		q.add(5);
		/*int len = q.size();
		for (int i = 0; i < len; ++i)
		{
			System.out.print(q.poll() + " ");
		}
		System.out.println(q.toString());*/
		Iterator<Integer> it1 = q.iterator();
		while (it1.hasNext())
		{
			System.out.print(it1.next() + " ");
		}
	}
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-02-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档