17.5 Collections:工具类
排序操作(主要针对List接口相关)
reverse(List list):反转指定List集合中元素的顺序
shuffle(List list):对List中的元素进行随机排序(洗牌)
swap(List list, int i, int j):将指定List集合中i处元素和j出元素进行交换
rotate(List list, int distance):将所有元素向右移位指定长度,如果distance等于size那么结果不变
sort(List list):对List里的元素根据自然升序排序 ( list里的元素对应的类必须是实现了Comparable接口)
/**接口Comparable<T> * public interface Comparable<T> { * public int compareTo(T o); * } * 实现接口的时指定泛型为本类型 */ public class Student implements Comparable<Student> { ... @Override //实现compareTo 方法,说明:源码内部实现排序采用的二叉树和快速排序的结合,是升序排序 public int compareTo(Student o) { //自定义比较规则 if(条件){ return 1; //返回大于0的数,则说明本对象大于要比较的对象 }else if(条件){ return -1;//返回小于0的数,则说明本对象小于要比较的对象 } return 0;//返回0,则说明本对象等于要比较的对象 } }
//说明:实现Comparable接口,代码重用率高
sort(List list, Comparator c):自定义比较器进行排序() ... sort(list,null);//若比较器传入null值时,则相当于上面的方法sort(list),按上面的方式比较。 /** * 接口Comparator<T> * public Interface Comparator<T>{ * int compare(T o1, T o2); * } * 匿名内部类实现Comparator接口的时候泛型指定为集合中要比较的元素类型 */ Collections.sort(list, new Comparator<Student>(){ @Override public int compare(Student o1, Student o2) { //自定义比较规则:o1和o2进行比较 if(条件){ return 1; //返回值大于0,则说明自定义为 o1>o2 }else if(条件){ return -1; //返回值小于0,则说明 自定义为 o1<o2 } return 0;//返回0,则说明自定义为 o1=o2 } }); //说明:一般用匿名类实现Comparator接口,使用灵活,规则可以随意根据需要而定。
查找和替换(主要针对Collection接口相关)
fill(List list, Object obj):使用指定对象填充
frequency(Collection c, Object o):返回指定集合中指定对象出现的次数 (需要重写equals()方法)
replaceAll(List list, Object old, Object new):替换
binarySearch(List list, Object key):(要先排序)使用二分搜索法,以获得指定对象在List中的索引(下标)。
以下几个方法,需要先实现Comparable或者Comparator接口
max(Collection coll);返回最大元素
max(Collection coll, Comparator comp):根据自定义比较器,返回最大元素
min(Collection coll):返回最小元素
min(Collection coll, Comparator comp):根据自定义比较器,返回最小元素
其他用法比较不常用,详情请参照 JAVA API 说明。