java 对象排序(自娱自乐)

在java中基本使用2种方法 即ComparatorComparable接口,来完成基本的和稍微复杂的排序,当然面对不同的数据结构,如Array数组 set集合 映射map,排序的方式稍有不同
本文之定义一个Person类,自定义某一属性来对一系列Person对象进行排序
方式一通过实现Comparable接口覆写其Compare方法
/** 实现了 Comparable 接口的 Person 类,

  • 每个 Person 对象都是可比较的,比较的依据是 age 属性。
  • /
    class Person implements Comparable{
    String name; // 人名
    int age; // 年龄
    public Person(String n, int a){
    this.name = n;
    this.age = a;
    }
    /
    * 重写 Comparable 的 compareTo 方法,表示按照人的年龄来排序 /
    @Override
    public int compareTo(Person p2){
    if(this.age > p2.age){
    return 1;
    }else if(this.age < p2.age){
    return -1;
    }else{
    return 0;
    }
    }
    /
    * 重写 Object 的 toString() 方法,便于打印对象 */
    @Override
    public String toString(){
    return (“name:” + this.name + “, age:” + this.age).toString();
    }
    }

public class HelloWorld{
public static void main(String []args){
// 构建 Person 对象数组,包含 5 个对象
Person[] ps = new Person[5];
ps[0] = new Person(“John”, 30);
ps[1] = new Person(“Mike”, 22);
ps[2] = new Person(“Kim”, 34);
ps[3] = new Person(“Canddy”, 25);
ps[4] = new Person(“Sam”, 28);
// 利用 sort 方法对 Person 数组进行排序
Arrays.sort(ps);
// 打印 Person 数组
for(int i=0; i<ps.length; i++){
System.out.println(ps[i]);
}
}
}
方式二:当我们无法改变对象内部的代码的时候可以通过Comparator接口
public class HelloWorld{
public static void main(String []args){
// 构建 Person 对象数组,包含 5 个对象
Person[] ps = new Person[5];
ps[0] = new Person(“John”, 30);
ps[1] = new Person(“Mike”, 22);
ps[2] = new Person(“Kim”, 34);
ps[3] = new Person(“Canddy”, 25);
ps[4] = new Person(“Sam”, 28);
// 利用 sort 方法对 Person 数组进行排序
Arrays.sort(ps, new Comparator(){
/** 重写 compare 方法来对 Person 对象进行比较 */
@Override
public int compare(Person p1, Person p2){
if(p1.age > p2.age){
return 1;
}else if(p1.age < p2.age){
return -1;
}else{
return 0;
}
}
});
// 打印 Person 数组
for(int i=0; i<ps.length; i++){
System.out.println(ps[i]);
}
}
}

java8 根据对象否的某一属性进行排序
List newList = list.stream().sorted(Comparator.comparing(User::getAge))
.collect(Collectors.toList());
https://www.cnblogs.com/kuanglongblogs/p/11230250.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值