PriorityQueNue优先队列的小测试:
public static void main(String[] args) {
MyComparator c = new MyComparator();
PriorityQueue<QuenueTest> pq = new PriorityQueue<>(3, c);
QuenueTest t1 = new QuenueTest(1, 1);
QuenueTest t2 = new QuenueTest(2, 2);
QuenueTest t3 = new QuenueTest(3, 3);
pq.add(t1);
pq.add(t2);
pq.add(t3);
// PriorityQuenue继承AbstractQueue,AbstractQueue继承AbstractCollection,可以迭代
System.out.println("iteratign begining...");
for (QuenueTest t : pq) {
System.out.println(t.getData() + "-----" + t.getWeight());
}
System.out.println("removing elements ...");
while (!pq.isEmpty()) {
System.out.println(pq.remove());
}
System.out.println("after removing... ");
System.out.println(pq.isEmpty() == true ? "我被榨干了..." : "我还有数据");
}
/**
*
* @ClassName: QuenueTest.java
* @功能描述:
*
*/
static class QuenueTest {
int data;
int weight;// 权重值
public int getData() {
return data;
}
public void setData(int data) {
this.data = data;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
public QuenueTest(int data, int weight) {
super();
this.data = data;
this.weight = weight;
}
}
/**
*
* @ClassName: 构造PriorityQuenue用
* @功能描述: PriorityQuenue的构造函数: public PriorityQueue(int initialCapacity, Comparator<? super E>
* comparator) 可以看到,需要传递一个comparator实例。
*/
static class MyComparator implements Comparator<QuenueTest> {
@Override
public int compare(QuenueTest o1, QuenueTest o2) {
// TODO Auto-generated method stub
if (o1.getWeight() < o2.getWeight()) {
return -1;
} else if (o1.getWeight() > o2.getWeight()) {
return 1;
} else {
return 0;
}
}
ProrityQuenue优先队列初次使用
最新推荐文章于 2020-04-29 09:58:38 发布