首先对于Collectons而言,它里面的方法都是静态的。
.sort(List<T> list)
.sort(List<T> list, Comparator<? super T> c):对List数组进行自然排序。
它的排序原理源代码为:
public static <T extends Comparable<? super T>> void sort(List<T> list) {
Object[] a = list.toArray();
sort(a);
ListIterator<T> i = list.listIterator();for (int j=0; j<a.length; j++) {
i.next();
i.set((T)a[j]);
}
}
上面的是Collections集合框架工具类中sort方法的源代码,看着大家可能会比较脑袋大,不过没关系,下面是我重新写的一个同等作用的代码,原理是一样,只是看着会更容易理解一些。
public static <T extends Comparable<? super T>> void sort(List<T> list) {
for(int i = 0;i<list.size()-1;i++){
for(int j = i+1;j<list.size();j++){
if(list.get(i).compareTo(list.get(j))>0){
Collections.swap(list,i,j);//在指定列表的指定位置处交换元素。
}
}
}
}
当然你也可以定义一个比较器,然后在sort方法的括号中添加一个逗号并new一个对象即可。
.max(Collection<? Extends T> coll):取出集合中的最大值,是按自然排序中取出最大值。
这个方法很简单就不举例说明了。
.shuffle(List<?> list):使用默认随机源对指定列表进行置换。
这个方法呢其实原理就像我们扔骰子的原理是一样的。
.fill(List<? super T> list, T obj):使用指定元素替换指定列表中的所有元素。
即把集合中的元素全部替换成指定的元素。
最后就是一些synchronized+Collection/List/Map/Set的指定并支持同步(线程安全的)列表。
评论前必须登录!
注册