您的位置:首页 > 编程语言 > Java开发

java 数组比较排序

2013-02-23 08:57 197 查看
java数组比较排序需要实现Comparable接口的compareTo方法,方可用compareTo进行比较或者用Arrays.sort(arrayObj); 进行排序

/**一个雇员类	实现了比较的接口
* @author CXY
*
*/
public class Employee implements Comparable<Employee>
{
/**
* 	姓名
*/
private String name;

/**
*	工资
*/
private float money;

/**构造函数
* @param name
* @param money
*/
Employee(String name,float money)
{
this.name=name;
this.money=money;
}

/**
* 显示雇员信息
*/
public void showEmployeeMessage()
{
System.out.println("姓名:"+name+",工资:"+money);
}

//实现比较接口的方法
@Override
public int compareTo(Employee anotherOne)
{
if(money > anotherOne.getMoney())
{
return 1;
}else if(money < anotherOne.getMoney())
{
return -1;
}
return 0;
}

public String getName()
{
return name;
}

public void setName(String name)
{
this.name = name;
}

public float getMoney()
{
return money;
}

public void setMoney(float money)
{
this.money = money;
}

}


这个是一个实现了compareTo接口的雇员类,那么它就可以进行比较和排序了。

测试类:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**雇员测试类
* @author CXY
*/
public class EmployeeTest
{
public static void main(String[] args) throws Exception
{
Employee[] employeeA=new Employee[3];

employeeA[0]=new Employee("小红", 5000.5f);
employeeA[1]=new Employee("小黄", 8000.8f);
employeeA[2]=new Employee("小白", 5000.6f);

System.out.println("工资排序前:");
for(Employee one:employeeA)
{
one.showEmployeeMessage();
}

Arrays.sort(employeeA);

System.out.println("=====================");
System.out.println("工资排序后:");
for(Employee one:employeeA)
{
one.showEmployeeMessage();
}

System.out.println("=====================");
if(employeeA[1].compareTo(employeeA[0])==1)
{
System.out.println(employeeA[1].getName()+"比"+employeeA[0].getName()+"工资高");
}else if(employeeA[1].compareTo(employeeA[0])==-1)
{
System.out.println(employeeA[1].getName()+"比"+employeeA[0].getName()+"工资低");
}else
{
System.out.println(employeeA[1].getName()+"和"+employeeA[0].getName()+"工资一样");
}

System.out.println("===============比较测试===============");

}

}


compareTo的实现方式:

x.compareTo(y)为例,当x小于y的时候,返回一个负数。当x大于y的时候,返回一个正数。相等的时候返回0.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: