A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© F灬灬 中级黑马   /  2015-8-28 18:16  /  212 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一:同步控制:多线程并发访问集合的线程安全
     
                   java.lang.UnsupportedOperationException操作异常

常用容器 ArrayList HashSet HashMap 等都是线程不安全的
Collections提供了synchronizedXxx()方法,将指定容器包装成同步
synchronizedList()
synchronizedSet()
synchronizedMap()
具体代码:
               List<String> list = new ArrayList<String>();
                   list.add( "a");
                   list.add( "b");
                    //list可以同步
                   List<String> synList = Collections.synchronizedList(list);
                   System. out.println( "线程安全的list制作完毕" );
二:不可变设置:"只读"访问,Collections提供了三种方法
emptyXxx()空的不可变的集合
          public static Set<String> oper(Set<String> set){
                              //操作
                              if( null==set){
                                       return Collections.EMPTY_SET;//外部获取避免NullPointException
                             }
                              return set;
                   }
singletonXxx一个元素不可变的集合
               List<String> list = Collections.singletonList(new String());
                   list.add( "test");
                    //list.add("bjsxt ");//只能包含一个元素的容器
unmodifiableXxx不可变容器
Map<String,String>map = new HashMap<String,String>();
                   map.put( "test", "test");
                   map.put( "bjsxt","bjsxt" );
                    //只读控制
                   Map<String,String>map2 = Collections. unmodifiableMap(map);
           //      map2.put("a","a");//不能操作
                   System. out.println(map2.size());

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马