一个list里面存的是一个类order
order类里面有个age变量
要求根据age变量排序list
order类里面有个age变量
要求根据age变量排序list
解决方案 »
- struts logic标签怎么换成spring mvc的标签
- 请教,SortedSet的“比较去重”
- 在java中,gzip 压缩和解压多个文件?
- 中国人的J2EE应用服务器:金蝶Apusic应用服务器V4.0今日发布
- JAR包的问题。在线等
- java 调用本地dll时,用vc6编译dll时出现错误,怎样将d:\jdk\include包含进去
- TYPE_SCROLL_INSENSITIVE 和 TYPE_SCROLL_SENSITIVE 有何区别?
- 用DOM解析XML的时候,name可以解析,value解析不出来?郁闷了,帮忙看下吧。。
- 我是真的很急!
- 多线程问题
- 调用jni中的方法GetStaticMethodID出错!
- 100的问题,高手才进来,高难度的正则表达式
应该是order实现Comparator接口,然后Collections.sort(List<T> list, Comparator<? super T> c)
API
API
API
API
API
API
/**
* 实现排序接口的Order类,排序接口也可以在其他类实现
*/
public class Order implements Comparator<Order> {
private int age; /**
* @param age
*/
public Order(int age) {
super();
this.age = age;
} /* (non-Javadoc)
* @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
*/
@Override
public int compare(Order o1, Order o2) {
//以下是顺序排序,需要逆序,可以在o1.age>o2.age的情况下返回-1
//同理o1.age < o2.age 返回1
if(o1.age == o2.age)
return 0;
else if(o1.age > o2.age)
return 1;
else if(o1.age < o2.age)
return -1;
return -1;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("Order [age=");
builder.append(age);
builder.append("]");
return builder.toString();
}
}
public static void main(String[] args) {
//构造被排序的数组
List<Order> list = new ArrayList<Order>();
list.add(new Order(0));
list.add(new Order(3));
list.add(new Order(-10));
list.add(new Order(100));
list.add(new Order(9));
list.add(new Order(7));
//排序接口实现类,这里因为我把排序接口实现在了Order类
//这里就实例化Order类,也可以是其他类
Order o = new Order(0);
Collections.sort(list,o);
for(Order item : list){
System.out.println(item.toString());
}
}
import java.util.Collections;
import java.util.Comparator;
import java.util.List;public class Test {
public static void main(String[] args) throws Exception{
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());
}
}
public class Order implements Comparable<Order> { private int age; public Order(int age){
this.age = age;
}
public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} @Override
public int compareTo(Order o) {
int age1 = o.getAge();
return this.getAge() > age1 ? this.getAge() : age1;
}
}
其他的也可以,只是设计不够 好,应付这个DEMO足够了