1) Необходимо написать два компаратора для сортировки по возрасту и имени отдельно , а затем используйте Collections.sort(Список,Сравнение). Что-то вроде этого:
class StudentVO {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
class AgeComparator implements Comparator<StudentVO> {
@Override
public int compare(StudentVO o1, StudentVO o2) {
Integer age1 = o1.getAge();
Integer age2 = o2.getAge();
return age1.compareTo(age2);
}
}
class NameComparator implements Comparator<StudentVO> {
@Override
public int compare(StudentVO o1, StudentVO o2) {
return o1.getName().compareTo(o2.getName());
}
}
А затем используйте их, чтобы отсортировать на основе age
:
Collections.sort(list,new AgeComparator());
для сортировки на основе name
:
Collections.sort(list,new NameComparator());
2) Если вы считаете, что List
из StudentVO
имеет какой-то естественный порядок сортировки, скажем, предположим, что сортировка по age
. Затем используйте Comparable для age
и Comparator
для name
.
class StudentVO implements Comparable<StudentVO>{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public int compareTo(StudentVO o) {
return ((Integer)getAge()).compareTo(o.getAge());
}
}
class NameComparator implements Comparator<StudentVO> {
@Override
public int compare(StudentVO o1, StudentVO o2) {
return o1.getName().compareTo(o2.getName());
}
}
А затем используйте их, чтобы отсортировать на основе age
:
Collections.sort(list);
для сортировки на основе name
:
Collections.sort(list,new NameComparator());
person
AllTooSir
schedule
25.04.2013