Java_集合_Collections工具类

本博客为子墨原创,转载请注明出处!
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);
	}
}

你可能感兴趣的:(Collections,Collection,sort,binarySearch,reverseOrder)