PriorityQueue如何对对象类型的数据进行排序

7 篇文章 0 订阅
本文介绍如何使用Java的PriorityQueue容器存储自定义对象,并通过实现Comparable接口按对象属性(如年龄)进行排序。示例中创建了一个Student类,并在TestPriorityQueue类中演示了如何添加Student对象到PriorityQueue中并按年龄排序输出。
摘要由CSDN通过智能技术生成

public class Student implements Comparable<Student> {

String name;                    //先写出一个Student类,然后把Student对象加进PriorityQueue的容器里

int age;                            //一开始没有实现comparable接口,所以也没用实现comparto方法
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) {
super();
this.name = name;
this.age = age;
}
public Student() {
super();
// TODO Auto-generated constructor stub
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
@Override
public int compareTo(Student o) {
// TODO Auto-generated method stub
return new Integer(this.getAge()).compareTo(new Integer(o.getAge()));
//this.getAge()是int类型无法调用comparto的方法 所以无法比较,把它转化为一个Integer对象后就可以调用(integer实现了comparable接口);才能进行比较;
}

}


import java.util.PriorityQueue;
import java.util.Queue;


public class TestPriorityQueue {
public static void main(String[] args) {
Queue<Student> p = new PriorityQueue<>();
p.add(new Student("李烈",12));
p.add(new Student("李哈",13));
p.add(new Student("李白",12));
p.add(new Student("黑子",15));
p.add(new Student("二哈",12));
p.add(new Student("人发",1));
/* for(Student s: p) {

System.out.println(s);//用加强for循环会无法排序,因为直接取出来没有进行比较

                    } */

              while(!p.isEmpty()) {                        //调用poll方法时候会进行比较;
System.out.println(p.poll()); //直接在这里打印会报错类型不对,因为比较对象要实现comparable接口并且实
}                                                //  现它的comparto方法;所以在Student里去实现comparable接口;

//输出的结果按照年龄大小排序,如果想按照其他例如姓名排序需要再重写comparto
}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值