return lastName1.compareTo(lastName2);
else
return firstName1.compareTo(firstName2);
}
}
LastNameComparator.java
package com.zj.sort.comparator;
import java.util.Comparator;
//实现按LastName优先排序
public class LastNameComparator implements Comparator<Person> {
public int compare(Person person, Person anotherPerson) {
String lastName1 = person.getLastName().toUpperCase();
String firstName1 = person.getFirstName().toUpperCase();
String lastName2 = anotherPerson.getLastName().toUpperCase();
String firstName2 = anotherPerson.getFirstName().toUpperCase();
if (lastName1.equals(lastName2))
return firstName1.compareTo(firstName2);
else
return lastName1.compareTo(lastName2);
}
}
下面通过上述两个比较器,调用Collections.sort和Arrays.sort排序,以及将其应用于有序集合TreeSet和TreeMap中。
3.1 测试Arrays.sort()方法
ArraysSortUnit.java
package com.zj.sort.comparator;
import java.util.Arrays;
public class ArraysSortUnit {
public static void main(String[] args) {
Person[] ps = { new Person(20, "Tom", "A"),
new Person(20, "Jeff", "A"), new Person(30, "Mary", "A"),
new Person(20, "Ada", "B"), new Person(40, "Walton", "B"),
new Person(61, "Peter", "B"), new Person(20, "Bush", "B") };
System.out.println(Arrays.toString(ps));
Arrays.sort(ps,new FirstNameComparator());
System.out.println(Arrays.toString(ps));
Arrays.sort(ps,new LastNameComparator());
System.out.println(Arrays.toString(ps));
}
}
结果:
[20{Tom A}, 20{Jeff A}, 30{Mary A}, 20{Ada B}, 40{Walton B}, 61{Peter B}, 20{Bush B}]
[20{Ada B}, 20{Bush B}, 20{Jeff A}, 30{Mary A}, 61{Peter B}, 20{Tom A}, 40{Walton B}]
[20{Jeff A}, 30{Mary A}, 20{Tom A}, 20{Ada B}, 20{Bush B}, 61{Peter B}, 40{Walton B}]
Java:比较与排序(5)
时间:2011-02-25 zhangjunhd
3.2 测试Collections.sort()方法
CollctionsSortUnit.java
package com.zj.sort.comparator;
import java.util.Arrays;
import java.util.Collections;
public class CollectionsSortUnit {
public static void main(String[] args) {
Person[] ps = { new Person(20, "Tom", "A"),
new Person(20, "Jeff", "A"), new Person(30, "Mary", "A"),
new Person(20, "Ada", "B"), new Person(40, "Walton", "B"),
new Person(61, "Peter", "B"), new Person(20, "Bush", "B") };
System.out.println(Arrays.toString(ps));
Collections.sort(Arrays.asList(ps),new FirstNameComparator());
System.out.println(Arrays.toString(ps));
Collections.sort(Arrays.asList(ps),new LastNameComparator());
System.out.println(Arrays.toString(ps));
}
}
结果:
[20{Tom A},
|