一、Collections常用方法
public static <T> boolean addAll(Collection<T> c,T...elements); // 往集合中添加一些元素。
public static void shuffle(List<?> list); // 打乱集合顺序。
public static <T> void sort(List<T> list); // 将集合中的元素按照默认规则排序。
public static <T> void sort(List<T> list,Comparator<? super T>); // 将集合中元素按照指定规则排序。
二、Comparable接口
1. sort(List<T> list) 使用前提: 1.1 被排序的集合里的元素T,必须实现Comparable,重写接口中的方法compareTo定义排序的规则。 1.2 Comparable接口的排序的规则: ? ? ? ? 自己(this)-?参数:升序
@Override
public int compareTo(Person o){
return 0; // 认为元素都是相同的
}
@Override
public int compareTo(Person o){
return this.getAge() - o.getAge(); // age元素升序排序
}
三、Comparator比较器
Collections.sort(list,new Comparator<Person>() {
@Override
public int compare(Person o1,Person o2) {
// 按照年龄升序排序
int result = o1.getAge() - o2.getAge();
// 如果两个人年龄系统,再使用姓名的第一个字比较
if ( result == 0){
result = o1.getName.charAt(0) - o2.getName.charAt(0);
}
return result;
}
});
四、Comparator和Comparable的区别
? ? ? ? Comparable:自己(this)和别人(参数)比较,自己需要实现Comparable接口,重写比较的规则compareTo方法。
? ? ? ? Comparator:相当于找一个第三方的裁判,比较两个。
|