利用比较器(Comparator)我们可以轻易对List中的元素进行整体排序
希望下面的代码能让很多喜欢在JSP页面上写排序算法的朋友改掉这个恶习。表现层的东西还是逻辑简单为好,越白痴越好。
package testCompare;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Random;
/** *//**
* 注意:此类具有与 equals 不一致的自然排序
*/
public class Person ...{
private int age;
private String name;
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 String toString() ...{
return String.valueOf(this.age);
}
public static void main(String[] args) ...{
List persons = new ArrayList();
Random ageCreator = new Random();
for (int i = 0; i < 10; i++) ...{
Person person = new Person();
int age = ageCreator.nextInt();
while(true)
...{
if(age > 0)...{
age = age % 100;
break;
}else...{
age = ageCreator.nextInt();
}
}
person.setAge(age);
persons.add(person);
}
Collections.sort(persons,new AgeComparator());
for (int i = 0; i < persons.size(); i++) ...{
System.out.println(persons.get(i));
}
}
}
class AgeComparator implements Comparator...{
public int compare(Object arg0, Object arg1) ...{
return ((Person)arg0).getAge() - ((Person)arg1).getAge();
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Random;
/** *//**
* 注意:此类具有与 equals 不一致的自然排序
*/
public class Person ...{
private int age;
private String name;
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 String toString() ...{
return String.valueOf(this.age);
}
public static void main(String[] args) ...{
List persons = new ArrayList();
Random ageCreator = new Random();
for (int i = 0; i < 10; i++) ...{
Person person = new Person();
int age = ageCreator.nextInt();
while(true)
...{
if(age > 0)...{
age = age % 100;
break;
}else...{
age = ageCreator.nextInt();
}
}
person.setAge(age);
persons.add(person);
}
Collections.sort(persons,new AgeComparator());
for (int i = 0; i < persons.size(); i++) ...{
System.out.println(persons.get(i));
}
}
}
class AgeComparator implements Comparator...{
public int compare(Object arg0, Object arg1) ...{
return ((Person)arg0).getAge() - ((Person)arg1).getAge();
}
}