Java数组排序Arrays_sort,Comparator接口的用法 (二)

利用Comparator接口对对象进行排序:

 

Students类:

package com.seimma.arrays;

public class Students{
 
 private String name;   //学员姓名
 private int age;       //学员年龄
 
 public Students(){
  
 }
 
 public Students(String name,int age){
  this.name=name;
  this.age=age;
 }
 
 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;
 }
}

 

ByAgeComparator 排序类:

 

package com.seimma.arrays;

import java.util.Comparator;

public class ByAgeComparator implements Comparator<Object> {
     /**
      * firstStudents 要比较的第一个对象
      * secondStudnets 要比较的第二个对象
      */
     public int compare(Object firstStudents, Object secondStudnets) {
      int firstAge=((Students)firstStudents).getAge();      //取出第一个对象的值。 
      int secondAge=((Students)secondStudnets).getAge();    //取出第一个对象的值。

      int threeAge=firstAge-secondAge;     //进行比较

      //第一个参数小于、等于或大于第二个参数时分别返回负整数、零或正整数

      if (threeAge>0) {
      return 1;
      }
         if (threeAge<0) {
      return -1;
      }else {
         return 0;
      }
    }
}

 

package com.seimma.arrays;

 

import java.util.Arrays;

public class ArraysDemo {

       public static void main(String[] args) {
             ArraysDemo sortArrays=new ArraysDemo();
             sortArrays.sortObjectArray();
      }

 

      /**
     * 对对象进行排序
     */
    public void sortObjectArray(){
     Students stu1=new Students("Students1",1);
     Students stu2=new Students("Students2",2);
     Students stu3=new Students("Students3",3);
     Students stu4=new Students("Students4",4);
     Students stu5=new Students("Students5",5);
     Students stu6=new Students("Students6",6);
     
     Students [] stus=new Students[]{stu3,stu5,stu1,stu6,stu2,stu4};
     System.out.println("对对象排序前:");
     for (int i = 0; i < stus.length; i++) {
   Students st=stus[i];
   System.out.println(st.getName());
  }
     
     System.out.println("对对象排序后:");
     Arrays.sort(stus, new ByAgeComparator());
     for (int i = 0; i < stus.length; i++) {
      Students st=stus[i];
      System.out.println(st.getName());
   
  }
    }

 

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值