133_容器_容器的同步控制與只讀設定
阿新 • • 發佈:2018-11-09
- 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;
}
}