![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package 对象比较排序; 2 3 import java.util.Arrays; 4 5 class A implements Comparable<A>{ 6 private String name; 7 private int age; 8 public A(String name,int age){ 9 this.name=name; 10 this.age=age; 11 } 12 @Override 13 public int compareTo(A o) {//此方法无需手工调用,Arrays会自动调用 14 if(this.age<o.age) 15 return -1;//1.this小于返回负数,this大于返回正数,则升序; 16 if(this.age>o.age) 17 return 1;//2.this小于返回正数,this大于返回负数,则降序; 18 return 0;//相等返回0 19 } 20 @Override 21 public String toString() { 22 return "name="+name+",age="+age+" "; 23 } 24 } 25 public class TestComparable { 26 public static void main(String[] args) { 27 A[] as=new A[]{ 28 new A("张三",63), 29 new A("李四",33), 30 new A("王五",53), 31 new A("赵六",43), 32 }; 33 Arrays.sort(as); 34 System.out.println(Arrays.toString(as)); 35 } 36 }
运行结果:
[name=李四,age=33
, name=赵六,age=43
, name=王五,age=53
, name=张三,age=63
]
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package 对象比较排序; 2 3 import java.util.Arrays; 4 import java.util.Comparator; 5 6 class B{ 7 private String name; 8 private int age; 9 public B(String name,int age){ 10 this.name=name; 11 this.age=age; 12 } 13 public int getAge() { 14 return age; 15 } 16 @Override 17 public String toString() { 18 return "name="+name+",age="+age+" "; 19 } 20 } 21 class BComparator implements Comparator<B>{ 22 @Override 23 public int compare(B o1, B o2) { 24 if(o1.getAge()<o2.getAge()) 25 return -1; 26 if(o1.getAge()>o2.getAge()) 27 return 1; 28 return 0; 29 } 30 } 31 public class TestComparator { 32 public static void main(String[] args) { 33 B[] bs=new B[]{new B("张三",44), 34 new B("李四",33), 35 new B("王二",55), 36 new B("赵六",66)}; 37 BComparator bc=new BComparator(); 38 Arrays.sort(bs, bc); 39 System.out.println(Arrays.toString(bs)); 40 } 41 }
运行结果:
[name=李四,age=33
, name=张三,age=44
, name=王二,age=55
, name=赵六,age=66
]
如果需要对一组对象进行排序建议优先使用Comparable