数组排序,请高手给个结果 按类中的某个属性对类数组排序,尽量用JDK的类实现 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 google一下Comparator,找个例子,应该不难 package com.keeya.Test;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;public class Test { public static void main(String[] args) { List<Employee> employees = new ArrayList<Employee>(); employees.add(new Employee("Andy", 21, 2000)); employees.add(new Employee("Felix", 21, 3000)); employees.add(new Employee("Bill", 35, 20000)); employees.add(new Employee("Helen", 21, 10000)); employees.add(new Employee("Cindy", 28, 8000)); employees.add(new Employee("Douglas", 25, 5000)); // 按名称排序 Collections.sort(employees, new NameComparator()); display(employees); // 按年龄排序 Collections.sort(employees, new AgeComparator()); display(employees); // 按薪水排序 Collections.sort(employees, new SalaryComparator()); display(employees); } public static void display(List<Employee> employees) { for (Employee e : employees) { System.out.println("雇员名=" + e.getName() + " 年龄=" + e.age + " 薪水=" + e.getSalary()); } System.out.println(); }}class Employee { protected String name; protected int age; protected int salary; public Employee(String name, int age, int salary) { this.name = name; this.age = age; this.salary = salary; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getSalary() { return salary; } public void setSalary(int salary) { this.salary = salary; }}class AgeComparator implements Comparator { public int compare(Object op1, Object op2) { Employee eOp1 = (Employee) op1; Employee eOp2 = (Employee) op2; // 按年龄排序 return eOp1.getAge() - (eOp2.getAge()); }}class NameComparator implements Comparator { public int compare(Object op1, Object op2) { Employee eOp1 = (Employee) op1; Employee eOp2 = (Employee) op2; // 按姓名排序 return eOp1.getName().compareTo(eOp2.getName()); }}class SalaryComparator implements Comparator { public int compare(Object op1, Object op2) { Employee eOp1 = (Employee) op1; Employee eOp2 = (Employee) op2; // 按薪水排序 return eOp1.getSalary() - (eOp2.getSalary()); }}测试结果:雇员名=Andy 年龄=21 薪水=2000雇员名=Bill 年龄=35 薪水=20000雇员名=Cindy 年龄=28 薪水=8000雇员名=Douglas 年龄=25 薪水=5000雇员名=Felix 年龄=21 薪水=3000雇员名=Helen 年龄=21 薪水=10000雇员名=Andy 年龄=21 薪水=2000雇员名=Felix 年龄=21 薪水=3000雇员名=Helen 年龄=21 薪水=10000雇员名=Douglas 年龄=25 薪水=5000雇员名=Cindy 年龄=28 薪水=8000雇员名=Bill 年龄=35 薪水=20000雇员名=Andy 年龄=21 薪水=2000雇员名=Felix 年龄=21 薪水=3000雇员名=Douglas 年龄=25 薪水=5000雇员名=Cindy 年龄=28 薪水=8000雇员名=Helen 年龄=21 薪水=10000雇员名=Bill 年龄=35 薪水=20000 如4楼所写,实现Comparator接口得到不同的比较器。不过他用的是集合,如果楼主想要数组的话,也一样,只是排序是调用Arrays类的sort方法,其他的基本一样 4楼,写的很详细也可以使用TreeSet排序 Integer.valueOf("").doubleValue() 有谁还记得static? Java的一点小问题,谢谢指导! JDBC的小问题,难啊! 线程与applet????? 大家帮帮忙,小弟刚学java不久有个问题? netbeans5.0怎么样把java文件生成exe文件 新人再问个基础问题: 高分求一个缩放程序源码 对象调用有参方法 为何不能直接输出 转换出错 请大虾们 帮助!!~!急 String 显示问题!~!~(大虾们帮忙)(急)
package com.keeya.Test;import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;public class Test {
public static void main(String[] args) {
List<Employee> employees = new ArrayList<Employee>(); employees.add(new Employee("Andy", 21, 2000));
employees.add(new Employee("Felix", 21, 3000));
employees.add(new Employee("Bill", 35, 20000));
employees.add(new Employee("Helen", 21, 10000));
employees.add(new Employee("Cindy", 28, 8000));
employees.add(new Employee("Douglas", 25, 5000)); // 按名称排序
Collections.sort(employees, new NameComparator());
display(employees); // 按年龄排序
Collections.sort(employees, new AgeComparator());
display(employees); // 按薪水排序
Collections.sort(employees, new SalaryComparator());
display(employees);
} public static void display(List<Employee> employees) {
for (Employee e : employees) {
System.out.println("雇员名=" + e.getName() + " 年龄=" + e.age + " 薪水="
+ e.getSalary());
}
System.out.println();
}
}class Employee {
protected String name; protected int age; protected int salary; public Employee(String name, int age, int salary) {
this.name = name;
this.age = age;
this.salary = salary;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getSalary() {
return salary;
} public void setSalary(int salary) {
this.salary = salary;
}
}class AgeComparator implements Comparator {
public int compare(Object op1, Object op2) {
Employee eOp1 = (Employee) op1;
Employee eOp2 = (Employee) op2; // 按年龄排序
return eOp1.getAge() - (eOp2.getAge());
}
}class NameComparator implements Comparator {
public int compare(Object op1, Object op2) {
Employee eOp1 = (Employee) op1;
Employee eOp2 = (Employee) op2; // 按姓名排序
return eOp1.getName().compareTo(eOp2.getName());
}
}class SalaryComparator implements Comparator {
public int compare(Object op1, Object op2) {
Employee eOp1 = (Employee) op1;
Employee eOp2 = (Employee) op2; // 按薪水排序
return eOp1.getSalary() - (eOp2.getSalary());
}
}测试结果:
雇员名=Andy 年龄=21 薪水=2000
雇员名=Bill 年龄=35 薪水=20000
雇员名=Cindy 年龄=28 薪水=8000
雇员名=Douglas 年龄=25 薪水=5000
雇员名=Felix 年龄=21 薪水=3000
雇员名=Helen 年龄=21 薪水=10000雇员名=Andy 年龄=21 薪水=2000
雇员名=Felix 年龄=21 薪水=3000
雇员名=Helen 年龄=21 薪水=10000
雇员名=Douglas 年龄=25 薪水=5000
雇员名=Cindy 年龄=28 薪水=8000
雇员名=Bill 年龄=35 薪水=20000雇员名=Andy 年龄=21 薪水=2000
雇员名=Felix 年龄=21 薪水=3000
雇员名=Douglas 年龄=25 薪水=5000
雇员名=Cindy 年龄=28 薪水=8000
雇员名=Helen 年龄=21 薪水=10000
雇员名=Bill 年龄=35 薪水=20000