使用**Collections.sort(vector , cmp)**方法,对待排序向量“vector”进行排序,其中cmp是自编比较器。
以利用City类的index属性进行排序为例演示。
比较器代码:
/*
* **设定升序时,a小于b时返回负数,反之返回正数**
* **设定降序时,a小于b时返回正数,反之返回负数**
*/
//按照City对象的index属性进行排序
class indexDESC implements Comparator<City> {
public int compare(City a, City b) {
if(a.getIndex() < b.getIndex()){
return -1;
}else if(a.getIndex() == b.getIndex()){
return 0;
}else{
return 1;
}
}
}
City类代码:
class City{
private int index;
private int peopleNum;
public City(int index , int peopleNum) {
this.index = index;
this.peopleNum = peopleNum;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
public int getPeopleNum() {
return peopleNum;
}
public void setPeopleNum(int peopleNum) {
this.peopleNum = peopleNum;
}
}
主函数:
public static void main(String[] args) {
City BJ = new City(1, 100);
City SH = new City(2, 110);
City GZ = new City(3, 90);
City SZ = new City(4, 80);
Vector<City> vector = new Vector<>();
vector.add(BJ);
vector.add(SH);
vector.add(SZ);
vector.add(GZ);
Comparator<City> cmp =new indexDESC();
System.out.println("————————————————排序前————————————————");
for(City ct : vector) {
System.out.print("index: " + ct.getIndex() + ",peopleNum: " + ct.getPeopleNum());
System.out.println();
}
Collections.sort(vector , cmp);
System.out.println("————————————————按照index升序排序后————————————————");
for(City ct : vector) {
System.out.print("index: " + ct.getIndex() + ",peopleNum: " + ct.getPeopleNum());
System.out.println();
}
结果:
————————————————排序前————————————————
index: 1,peopleNum: 100
index: 2,peopleNum: 110
index: 4,peopleNum: 80
index: 3,peopleNum: 90
————————————————按照index升序排序后————————————————
index: 1,peopleNum: 100
index: 2,peopleNum: 110
index: 3,peopleNum: 90
index: 4,peopleNum: 80