Java_集合_Collections工具类

来源:互联网 发布:mac桌面添加天气 编辑:程序博客网 时间:2024/06/05 20:48
本博客为子墨原创,转载请注明出处!
http://blog.csdn.net/zimo2013/article/details/8869162

1.Collection与Collections的区别

    Collection是个java.util下的接口,它是各种集合结构的父接口。

    Collection 层次结构中的根接口。Collection 表示一组对象,这些对象也称为 collection的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。JDK 不提供此接口的任何直接 实现:它提供更具体的子接口(如 Set 和 List)实现。此接口通常用来传递 collection,并在需要最大普遍性的地方操作这些 collection。

    Collections是个java.util下的,它包含有各种有关集合操作的静态方法

    Collections 此类完全由在 collection 上进行操作或返回 collection 的静态方法组成。它包含在 collection 上操作的多态算法,即“包装器”,包装器返回由指定 collection 支持的新 collection,以及少数其他内容。 如果为此类的方法所提供的 collection 或类对象为 null,则这些方法都会抛出 NullPointerException。


2.Collections的常见操作

/*Collections包含有各种有关集合操作的静态方法。 Strawberry2013-4-30*/public class Collections{private Collections() {}//构造函数私有化,不能创建对象//**sort方法排序public static <T extends Comparable<? super T>> void sort(List<T> list) {} //根据元素的自然顺序来public static <T> void sort(List<T> list, Comparator<? super T> c) {}//根据指定比较器进行排序//**返回最大元素public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll) {}//根据元素的自然顺序public static <T> T max(Collection<? extends T> coll, Comparator<? super T> comp){}//根据指定比较器//**根据最小元素。public static <T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll){}//根据元素的自然顺序public static <T> T min(Collection<? extends T> coll,Comparator<? super T> comp){}//根据指定比较器//**对List集合进行二分查找(前提必须已经排序)public static <T> int binarySearch(List<? extends Comparable<? super T>> list,T key){} //根据元素的自然顺序来public static <T> int binarySearch(List<? extends T> list, T key,Comparator<? super T> c){}//根据指定比较器//**将所有元素从一个列表复制到另一个列表。public static <T> void copy(List<? super T> dest,List<? extends T> src){}//**使用指定元素替换指定列表中的所有元素。public static <T> void fill(List<? super T> list,T obj){}//**使用另一个值替换列表中出现的所有某一指定值public static <T> boolean replaceAll(List<T> list,T oldVal,T newVal){}//**反转指定列表中元素的顺序public static void reverse(List<?> list){}//**在指定列表的指定位置处交换元素public static void swap(List<?> list,int i,int j){}//**指定集合进行强行反转public static <T> Comparator<T> reverseOrder(){}public static <T> Comparator<T> reverseOrder(Comparator<T> cmp){}//******************************************************************//**将非同步集合转成同步集合,原理:定义一个类,将集合所有的方法加同一把锁后返回。public static <T> List<T> synchronizedList(List<T> list){}//返回指定列表支持的同步(线程安全的)列表public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m){}//返回由指定映射支持的同步(线程安全的)映射public static <T> Set<T> synchronizedSet(Set<T> s){} //返回指定 set 支持的同步(线程安全的)set//**使用默认随机源对指定列表进行置换。所有置换发生的可能性都是大致相等的。public static void shuffle(List<?> list){}}

3.Collections的reverseOrder()强行逆转顺序应用

/*static <T> Comparator<T>  reverseOrder() ,它强行逆转实现了 Comparable 接口的对象 collection 的自然顺序。 static <T> Comparator<T>  reverseOrder(Comparator<T> cmp) 返回一个比较器,它强行逆转指定比较器的顺序Strawberry2013-4-28*/import java.util.*;class CollectionsTest{public static void main(String[] args){TreeSet<String> arr = new TreeSet<String>(Collections.reverseOrder(new Compa()));arr.add("bs");//reverseOrder(Comparator<T> cmp) 返回的也是比较器,将其强行逆转arr.add("acdf");arr.add("fcf");arr.add("c");Iterator it = arr.iterator();while(it.hasNext()){System.out.println(it.next());}}}class Compa implements Comparator<String>{public int compare(String s1, String s2){if(s1.length() < s2.length())return -1;if(s1.length() > s2.length())return 1;return s1.compareTo(s2);}}