Collections.sort(List<T>, Comparator < ? super T > c)鏂規(guī)硶鐢ㄤ簬瀵硅薄闆嗗悎鎸夌敤鎴瘋嚜瀹氫箟瑙勫垯鎺掑簭銆?br />
Comparable鐢ㄥ湪瀵硅薄鏈韓錛岃鏄庤繖涓璞℃槸鍙互琚瘮杈冪殑錛屼篃灝辨槸璇村彲浠ヨ鎺掑簭鐨勩傦紙String鍜孖nteger涔嬫墍浠ュ彲浠ユ瘮杈冨ぇ灝忥紝鏄洜涓哄畠浠兘瀹炵幇浜咰omparable鎺ュ彛錛屽茍瀹炵幇浜哻ompareTo()鏂規(guī)硶錛夈?/span>
Compator鐢ㄥ湪瀵硅薄澶栵紝鐩稿綋浜庡畾涔変簡涓涓帓搴忕畻娉曘?/span>
鎵浠ュ綋瀵硅薄鏈韓瀹炵幇浜咰omparable鎺ュ彛錛岄偅涔圓rrays.sort(T[])灝卞彲浠ヤ簡銆傚悓鐞咰ollections.sort(List<T>)灝卞彲浠ヤ簡銆?br />
榪樻槸浠g爜鏉ョ殑鐩存帴錛?br />package com.zx.ww.comparable;
import java.util.Arrays;
import java.util.Comparator;
public class ComparatorTest {
public static void main(String[] args) {
Dog d1 = new Dog(2);
Dog d2 = new Dog(1);
Dog d3 = new Dog(3);
Dog[] dogArray = {d1, d2, d3};
printDogs(dogArray);
Arrays.sort(dogArray, new DogSizeComparator());
printDogs(dogArray);
}
public static void printDogs(Dog[] dogArray) {
for (Dog dog : dogArray) {
System.out.print(dog.size+" ");
}
System.out.println();
}
}
class Dog{
int size;
public Dog(int size) {
this.size = size;
}
}
class DogSizeComparator implements Comparator<Dog> {
@Override
public int compare(Dog dog1, Dog dog2) {
// TODO Auto-generated method stub
return dog1.size - dog2.size;
}
}
杈撳嚭緇撴灉錛?br />2 1 3
1 2 3
榪欐槸瀵硅薄鏁扮粍鐢ㄤ簡Comparator鐨勭粨鏋溿?br />
涓嬮潰鐪嬪璞¤嚜韜疄鐜頒簡Comparable鎺ュ彛鐨勬柟寮忥細
/**
*
*/
package com.zx.ww.comparable;
import java.util.Arrays;
/**
* @author wuwei
* 2014騫?鏈?9鏃?br /> */
public class User implements Comparable<Object>{
private int id;
private String name;
private int age;
public User(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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(Object o) {
// TODO Auto-generated method stub
return this.age - ((User)o).getAge();
}
public static void main(String[] args) {
User[] users = new User[] {new User(1,"zhangsan",28), new User(2,"lisi",25)};
Arrays.sort(users);
for (int i = 0; i < users.length; i++) {
User user = users[i];
System.out.println(user.getId()+" "+user.getAge());
}
}
}
杈撳嚭緇撴灉錛?br />2 25
1 28
涓婅堪閮芥槸Arrays.sort()鐨勫簲鐢ㄦ柟寮忥紝鍚岀悊Collections.sort()涓鏍風殑瀹炵幇錛屼唬鐮佸涓嬶紝姣旇緝綆鍗曪細
package com.zx.ww.comparable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class CollectionSortTest {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("ac");
list.add("ab");
list.add("aa");
list.add("db");
list.add("ca");
for (String string : list) {
System.out.print(string + " ");
}
System.out.println();
Collections.sort(list);
for (String string : list) {
System.out.print(string + " ");
}
System.out.println();
//瀵硅薄A鑷韓瀹炵幇Comparable鎺ュ彛
List<A> aList = new ArrayList<A>();
aList.add(new A("wuwei", 1));
aList.add(new A("zhangsan", 3));
aList.add(new A("lisi", 2));
for (A a : aList) {
System.out.print(a+" ");
}
System.out.println();
Collections.sort(aList);
for (A a : aList) {
System.out.print(a+" ");
}
System.out.println();
//閲嶅啓Conparator鎺ュ彛鏂規(guī)硶
List<B> bList = new ArrayList<B>();
bList.add(new B("wuwei", 1));
bList.add(new B("zhangsan", 3));
bList.add(new B("lisi", 2));
for (B b : bList) {
System.out.print(b+" ");
}
System.out.println();
Collections.sort(bList, new Comparator<B>() {
@Override
public int compare(B b1, B b2) {
// TODO Auto-generated method stub
return b1.getCount().compareTo(b2.getCount());
}
});
for (B b : bList) {
System.out.print(b+" ");
}
System.out.println();
}
}
//瀵硅薄A鑷韓瀹炵幇Comparable鎺ュ彛
class A implements Comparable<A>{
private String name;
private Integer order;
public A(String name, Integer order) {
this.name = name;
this.order = order;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
public String toString() {
return "name is " +name+" order is "+order;
}
@Override
public int compareTo(A o) {
// TODO Auto-generated method stub
return this.order.compareTo(o.getOrder());
}
}
class B{
private String name;
private Integer count;
public B(String name, Integer count) {
this.name = name;
this.count = count;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getCount() {
return count;
}
public void setCount(Integer count) {
this.count = count;
}
public String toString() {
return "name is "+name+" count is "+count;
}
}
杈撳嚭緇撴灉錛?br />ac ab aa db ca
aa ab ac ca db
name is wuwei order is 1 name is zhangsan order is 3 name is lisi order is 2
name is wuwei order is 1 name is lisi order is 2 name is zhangsan order is 3
name is wuwei count is 1 name is zhangsan count is 3 name is lisi count is 2
name is wuwei count is 1 name is lisi count is 2 name is zhangsan count is 3