日期:2014-05-20  浏览次数:20756 次

对象数组排序问题
现有一对象数组,如果自己不写排序算法的话,有没有办法按照数组中每个对象的某个属性(int   类型)对该数组进行排序?最好能给个实现的例子

------解决方案--------------------
请大家到我的计算机论坛看看,随便给提点意见,人多力量大嘛,注册一下,回答几个一直我都不会的问题,肯定我会给大家奖励的,网址是,http://java.cc.topzj.com/
------解决方案--------------------
两种方法,
第一种,继承java.lang.Comparable
定义 > = < 的规则,分别返回 1 0 -1
例:if(object1.i > object2.i) return 1;
if()..............
i为object对象中的int属性


第二种方法,实现java.util.comparator接口
覆盖里面的compara()
使用时用重载后的sort(List, comparator)

------解决方案--------------------
给楼主一个例子,和你的要求一样
import java.util.*;

public class EmployeeSortTest
{
public static void main(String[] args)
{
Employee[] staff = new Employee[3];

staff[0] = new Employee( "Harry Hacker ", 35000);
staff[1] = new Employee( "Carl Cracker ", 75000);
staff[2] = new Employee( "Tony Tester ", 38000);

Arrays.sort(staff);

// print out information about all Employee objects
for (Employee e : staff)
System.out.println( "name= " + e.getName() + ",salary= " + e.getSalary());
}
}

class Employee implements Comparable <Employee>
{
public Employee(String n, double s)
{
name = n;
salary = s;
}

public String getName()
{
return name;
}

public double getSalary()
{
return salary;
}

public void raiseSalary(double byPercent)
{
double raise = salary * byPercent / 100;
salary += raise;
}

/**
Compares employees by salary
@param other another Employee object
@return a negative value if this employee has a lower
salary than otherObject, 0 if the salaries are the same,
a positive value otherwise
*/
public int compareTo(Employee other)
{
if (salary < other.salary) return -1;
if (salary > other.salary) return 1;
return 0;
}

private String name;
private double salary;
}