Collections类克Collection接口的区别,Collections类主要提供大量方法对Set,List和Map等集合的元素的排序、查询和修改等操作,还提供将集合对象设置为不可变,对集合对象实现同步控制等方法。而Collection接口是Set,List等容器的祖先。
Collections位于java.util.Collections下面,常用方法自己查询。主要说下它的同步控制,因为一般只有Vector和Hashtable是线程同步的,对于其他集合例如HashSet TreeSet等都是线程不安全的。Collections提供多个synchronizedXXX()静态方法将对象容器包装成线程同步的集合。
public class SynchronizedTest{
. .Collection c=Collections.synchronizedCollection(new ArrayList());
. .List list=Collections.synchronizedList(new ArrayList());
. Set s=Collections.synchronizedSet(new HashSet());
. .Map m=Collections.syn....Map(new HashMap());
}
然后是如何设置不可变集合,不可变在这里可以大概理解为集合对象只能访问集合元素,不可修改集合元素。Collections提供了三个方法
List unList=Collections.emptyList()//第一个方法,返回一个空的,不可改变的集合对象(可以是Set,List和Map,下同)
Set unSet=Collections.singleTon("傻瓜");//返回一个包含指定对象(只有一个或一项元素)的不可变的集合对象
Map scores=new HashMap();
scores.put("数学",90);
scores.put(“语文”,89);
Map unMap=Collections.unmodifiableMap(scores);
//下面任意一行都会报unsupptedOperation异常
unList.add("测试");//只能是空
unset.add(“测试”);//只能含有一个
unMap.add("语文",8);//不可修改