zoukankan      html  css  js  c++  java
  • 容器的同步控制与只读设置——高淇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 }
  • 相关阅读:
    3.26
    3.25
    3.24
    3.23 JS学习
    3.22 团队作业1 疫情数据可视化
    3.19 个人作业1源码
    3.18 个人作业源码
    5.06python
    5.05Android
    5.04Android
  • 原文地址:https://www.cnblogs.com/swimminglover/p/8362023.html
Copyright © 2011-2022 走看看