一、Comparable接口是在java.lang包下,实现此接口的类可以实现自然排序;而Comparator接口是在java.util包下,此接口是对未实现自然排序接口的类进行排序的;
二、Collections类和Arrays类中都实现了sort排序方法
Arrays.sort(paramArrayOfObject); //对实现自然排序的类进行排序 Arrays.sort(paramArrayOfT, paramComparator);//对未实现自然排序的类进行排序 Collections.sort(paramList);//对实现自然排序的类进行排序 Collections.sort(paramList, paramComparator);//对未实现自然排序的类进行排序
三、举例说明:
实体类:
package framework.yaomy.thread.model; /** * @Description:小狗实体类 * @version 1.0 * @since JDK1.7 * @author yaomy * @company xxxxxxxxxxxxxx * @copyright (c) 2017 yaomy Co'Ltd Inc. All rights reserved. * @date 2017年9月1日 上午10:02:54 */ public class Dog { private Integer age; private String dogName; public Dog(Integer age, String dogName) { this.age = age; this.dogName = dogName; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getDogName() { return dogName; } public void setDogName(String dogName) { this.dogName = dogName; } }
具体运行实例:
package framework.yaomy.thread.example; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import framework.yaomy.thread.model.Dog; /** * @Description:TODO * @version 1.0 * @since JDK1.7 * @author yaomy * @company xxxxxxxxxxxxxx * @copyright (c) 2017 yaomy Co'Ltd Inc. All rights reserved. * @date 2017年9月1日 上午10:02:41 */ public class ComparatorDemo { public static void main(String[] args) { List<Dog> list = new ArrayList<Dog>(); list.add(new Dog(23, "黑子")); list.add(new Dog(13, "麻花")); list.add(new Dog(13, "虎子")); list.add(new Dog(35, "大白")); //按照狗狗年龄升序排列 Collections.sort(list, new Comparator<Dog>() { @Override public int compare(Dog dog1, Dog dog2) { return dog1.getAge().compareTo(dog2.getAge()); } }); for(Dog dog:list) { System.out.println("狗狗年龄:"+dog.getAge()+"==========狗狗名字:"+dog.getDogName()); } System.out.println("========================分割线======================================"); //按照狗狗年龄降序序排列 Collections.sort(list, new Comparator<Dog>() { @Override public int compare(Dog dog1, Dog dog2) { return dog2.getAge().compareTo(dog1.getAge()); } }); for(Dog dog:list) { System.out.println("狗狗年龄:"+dog.getAge()+"==========狗狗名字:"+dog.getDogName()); } } }
运行结果:
狗狗年龄:13==========狗狗名字:麻花 狗狗年龄:13==========狗狗名字:虎子 狗狗年龄:23==========狗狗名字:黑子 狗狗年龄:35==========狗狗名字:大白 ========================分割线====================================== 狗狗年龄:35==========狗狗名字:大白 狗狗年龄:23==========狗狗名字:黑子 狗狗年龄:13==========狗狗名字:麻花 狗狗年龄:13==========狗狗名字:虎子