1. 程式人生 > >133_容器_容器的同步控制與只讀設定

133_容器_容器的同步控制與只讀設定

這裡寫圖片描述

  • TestSynchronized.java
package collection.others.Synchronized;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * 使用Collections管理同步容器
 *  synchronizedList()
    synchronizedSet()
    synchronizedMap()
 */
public class TestSynchronized {
    public
static void main(String[] args) { List<String> list =new ArrayList<String>(); list.add("a"); list.add("b"); //list可以同步 @SuppressWarnings("unused") List<String> synList =Collections.synchronizedList(list); System.out.println("執行緒安全的list製作完畢"
); } }
  • TestReadOnly.java
package collection.others.Synchronized;

import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 只讀設定
 * 1.emptyxxx()空的不可變的集合 
     * emptyList() 
     * emptyMap()
     * emptySet()
 * 2.singletonxxx()一個元素不可變的集合
     * singleton(T o) 
     * singletonList(T o) 
     * singletonMap(K key, V value) 
 * 3.unmodifiableXxx() 不可變容器
     * unmodifiableList(List<? extends T> list) 
     * unmodifiableSet(Set<? extends T> s) 
     * unmodifiableMap(Map<? extends K,? extends V> m) 
 */
public class TestReadOnly { public static void main(String[] args) { 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()); //一個元素的容器測試 List<String> list =Collections.singletonList(new String()); list.add("test"); //list.add("bjsxt"); //只能包含一個元素的容器 } public static Set<String> oper(Set<String> set){ if(null==set){ return Collections.emptySet(); //外部獲取避免NullPointerException } //操作 return set; } }