1、Collections工具类
针对集合提供的工具类
常用方法:
sort() 排序
binarySearch() 二分查找
max() 最大值
min() 最小值
reverse() 反转
shuffle() 乱序
1.1 排序
对当前集合进行升序排序,实现Comparable接口的类
只能使用一种排序方案,这种方案叫作“自然比较”方案。
List<Integer> list = new ArrayList<Integer>();
list.add(10);
list.add(12);
list.add(6);
list.add(8);
list.add(30);
list.add(23);
// 排序
Collections.sort(list);
System.out.println(list);
// 第二个参数 比较器(两种方式:1 自定义类实现Comparator接口, 2匿名内部类)
Collections.sort(list, new MyComparator());
System.out.println(list);
// 匿名内部类,
// 针对接口、抽象类,不需要实现类
// new 接口名/抽象类名(){ 重写的方法 }
Collections.sort(list, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
// TODO Auto-generated method stub
return o2 - o1;
}});
System.out.println(list);
1.2二分查找
使用二分搜索法搜索指定列表,以获得指定对象。在进行此调用之前,必须根据列表元素的自然顺序对列表进行升序排序,也就是使用sort进行自然升序排列。
如果没有对列表进行排序,则结果是不确定的。如果列表包含多个等于指定对象的元素,则无法保证找到的是哪一个。
Collections.binarySearch(list, 要查找的数值)
List<Integer> list = new ArrayList<Integer>();
list.add(10);
list.add(12);
list.add(6);
list.add(8);
list.add(23);
// 6 8 10 12 23
Collections.sort(list);
System.out.println(list);
// 二分查找 针对有序的集合
int index = Collections.binarySearch(list, 12);
System.out.println(index);
1.3 其他方法
Collections.max(list) //找最大值
Collections.min(list)//找最小值
Collections.reverse(list)//反转
List<Integer> list = new ArrayList<Integer>();
list.add(10);
list.add(12);
list.add(6);
list.add(8);
list.add(23);
// 找最大值
Integer max = Collections.max(list);
System.out.println(max);
// 乱序
Collections.shuffle(list);
System.out.println(list);
// 反转
Collections.reverse(list);
System.out.println(list);
2、匿名内部类
针对接口、抽象类,不需要实现类
语法格式:new 接口名/抽象类名(){ 重写的方法 }
前提和条件:必须存在继承和实现关系的时候才可以使用
Collections.sort(list, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
// TODO Auto-generated method stub
return o2 - o1;
}});
System.out.println(list);