容器的同步控制与只读设置——高淇JAVA300讲笔记之其他容器

案例一:使用Collections管理同步容器

 1 package com.bjsxt.others.synread;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Collections;
 5 import java.util.List;
 6 
 7 /**
 8  * 使用Collections管理同步容器
 9  * synchronizedList()
10  * synchronizedSet()
11  * synchronizedMap()
12  *
13  */
14 public class Demo01 {
15     public static void main(String[] args) {
16         List<String> list = new ArrayList<String>();
17         list.add("a");
18         list.add("b");
19         //list可以同步
20          List<String> synList = Collections.synchronizedList(list);
21          System.out.println("线程安全的list制作完毕");
22     }
23 }

 

案例二:使用了Collections的三个方法

 1 package com.bjsxt.others.synread;
 2 
 3 import java.util.Collections;
 4 import java.util.HashMap;
 5 import java.util.List;
 6 import java.util.Map;
 7 import java.util.Set;
 8 
 9 /**
10  * 只读设置
11  * emptyXxx() 空的不可变的集合
12  * 1、emptyList()
13  *       emptyMap()
14  *    emptySet()
15  *    
16  * 2、singletonXxx()  一个元素不可变的集合
17  * singleton(T o)
18  * singletonList(T o)
19  * singletonMap(K key, V value)
20  * 
21  * 3、unmodifiableXxx()  不可变容器
22  * unmodifiableList(List<? extends T> list)
23  * unmodifiableSet(Set<? extends T> s)
24  * unmodifiableMao(Map<? extends K, ? extends V> m)
25  *
26  */
27 public class Demo02 {
28 
29     public static void main(String[] args) {
30         // TODO Auto-generated method stub
31         Map<String,String> map = new HashMap<String,String>();
32         
33         map.put("test", "test");
34         map.put("bjsxt", "bjsxt");
35         
36         //只读控制
37         Map<String,String> map2 = Collections.unmodifiableMap(map);
38         //map2.put("a","a");  //会报错
39         System.out.println(map2.size());
40         
41         //一个元素的容器测试
42         List<String> list = Collections.singletonList(new String());
43         list.add("test");
44         //list.add("bjsxt");  会报错,因为只能包含一个元素
45     }
46     
47     public static Set<String> oper(Set<String> set) {
48         if(null == set) {
49             return Collections.EMPTY_SET;  //外部获取避免NullPointerException
50         }
51         //操作
52         return set;
53     }
54 
55 }

 

posted on 2018-01-26 23:35  爱游泳的小飞象  阅读(94)  评论(0编辑  收藏  举报

导航