collections工具类 排序
Collections:操作集合元素的工具类,由静态方法组成
void sort(List): 集合元素排序
void sort(List<T> list, Comparator<? super T> c) 集合元素排序
例如:有一个list集合(ArrayList),元素排序
方法1:
Collections.sort(list);//必须保证list集合中的元素已经实了Comparable接口 方法2: //自定义比较器的类,实现Comparator接口 class XxxComXxxComparator implements Comparator<元素类型>(){ public int compare(元素类型 t1, 元素类型 t2){ //比较大小的代码 return 0; } } Collections.sort(list, new XxxComparator()); //XxxComparator必须是实现了Comparator接口的实现类,可以使用匿名实现,如下: Collections.sort(list, new Comparator<元素类型>(){ public int compare(元素类型 t1, 元素类型 t2){ //比较大小的代码 return 0; } });
int binarySearch(List, E):二分法查找
List必须是实现自然排序(元素类型实现了Comparable接口)后,才能使用二分法查找
返回负数表示查找失败
void reverse(List) :将列表元素反转
void shuffle(List) :将列表元素混排
void shuffle(List<?> list, Random rnd) 将列表元素混排
//自定义排序算法 for(int i=0; i<col.size()-1; i++){ for(int j=i+1; j<col.size();j++){ if(比较索引号i和j对应位置元素的大小){ //两个元素交换 Object t1 = col.get(i); Object t2 = col.get(j); col.set(i,t2); col.set(j,t1); } } }
//使用Collections中的sort()实现自然排序
第一步:
实体类实现Comparable接口,实现compareTO()方法。
第二步:
调用sort()方法
Collections.sort(list集合)
//使用Collections中的sort()实现指定比较 器排序
第一步:
单独定义一个比较器实现Comparator接口
有两种方法:
1.内部类
class 比较器名 implements Comparator<元素类型>{
@Override
public int compare(元素类型 o1, 元素类型 o1){
o1元素与o2元素的比较
o1大于o2返回正数
o1小于o2返回负数
o1,o2相等,返回0
return 0;
}
}
2.匿名内部类(不要单独定义,在调用时定义)
第二步:
调用sort()方法1
Collections.sort(list集合, new 比较器() );
调用sort()方法2:匿名内部类
Collections.sort(list集合, new Comparator<元素类型>(){
public int compare(元素类型 o1, 元素类型 o1){
o1元素与o2元素的比较
o1大于o2返回正数
o1小于o2返回负数
o1,o2相等,返回0
return 0;
}
} );