Collections类的用法
2016-03-06 09:46
260 查看
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);//不可修改
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);//不可修改
相关文章推荐
- 上机题目(初级)- 用数组实现记事本+光标和删除(Java)
- 在Win CE程序开发中使用软件输入面板
- 阅读计划
- ggplot2_主题(theme)
- 小结选择器--CSS、JavaScript、JQuery
- 第一周学习进度
- 【最大权闭合子图】BZOJ1497[NOI2006]-最大获利
- hdu 2736 Average distance
- 科目一2013年
- HOG
- java之jms简介
- 本学期阅读计划
- 合理规划硬盘分区 fdisk命令的使用
- ExtJs学习笔记一
- 软件工程始发随想
- //子集生成总结
- gif动画生成工具
- 创建一个Cordova完整应用
- MATLAB 绘制函数曲线图
- Android Studio中新建library项目。