zoukankan      html  css  js  c++  java
  • PriorityQueue使用

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

    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() + " ");
    		}
    	}
    }
    
    ========================================Talk is cheap, show me the code=======================================
    CSDN博客地址:https://blog.csdn.net/qq_34115899
  • 相关阅读:
    squid节点添加新域名测试
    策略路由
    nagios note
    squid日志时间转换
    kuangbin专题十六 KMP&&扩展KMP HDU3336 Count the string
    kuangbin专题十六 KMP&&扩展KMP POJ3080 Blue Jeans
    kuangbin专题十六 KMP&&扩展KMP HDU2594 Simpsons’ Hidden Talents
    kuangbin专题十六 KMP&&扩展KMP POJ2752 Seek the Name, Seek the Fame
    kuangbin专题十六 KMP&&扩展KMP POJ2406 Power Strings
    kuangbin专题十六 KMP&&扩展KMP HDU1358 Period
  • 原文地址:https://www.cnblogs.com/lcy0515/p/9179830.html
Copyright © 2011-2022 走看看