`
lj_gzy2014
  • 浏览: 16685 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

java编程之集合框架

    博客分类:
  • java
阅读更多

            在写哈弗曼编码时,看到了优先队列,可是不会用,就用数组排序代替了。现在弄明白了,写出来,希望对读者有所帮助。

            优先队列的使用需要实现Comparator接口,具体代码如下:

package learning_lev1_集合框架;

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

public class Pq {
	public void testPriQueue(){
		
		//使用匿名内部类实现comparator接口,匿名类的对象为comp
		Comparator<Student> comp=new Comparator<Student>() {
			//实现接口里面的方法,选择age作为比较大小的对象
			public int compare(Student o1, Student o2) {
				Student stu1=o1;
				Student stu2=o2;
				if(stu1.getAge()>stu2.getAge())return 1;
				else if(stu1.getAge()<stu2.getAge())return -1;
				else return 0;
			}
		};
		
		//比较器的对象作为优先队列的参数,才能实现优先队列每次按要求取得最大最小值
		PriorityQueue<Student> queue=new PriorityQueue(1,comp);
		
		Student stu1=new Student("唐僧", 30, 01);
		Student stu2=new Student("悟空",32,02);
		Student stu3=new Student("八戒", 34,03);
		Student stu4=new Student(" 沙僧 ",31,04);
		queue.add(stu2);
		queue.add(stu1);
		queue.add(stu4);
		queue.add(stu3);
		
		//peek()与poll()的区别是,调用peek()后,队列中的元素
		//个数不变,而调用poll()后,最大或最小键值元素被去除
		Student student=queue.peek();
		//Student student=queue.poll();
		System.out.println(queue.size());
		System.out.println(student);
		
	}
	public static void main(String[] args) {
		new Pq().testPriQueue();
	}

}

------------------------------------------------------------------------------------------------
package learning_lev1_集合框架;

public class Student {
	private int num;
	private String name;
	private int age;
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	public Student(String name, int age,int num) {
		this.name = name;
		this.age = age;
		this.num=num;
	}
	
	public String toString(){
		return "编号"+num+",姓名:"+name+",年龄:"+age;
	}
	
}









 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics