Enumeration接口
Enumeration接口的作用和Iterator的作用有点相似,实际上就是Iterator取代了它,它有两个方法:
hasMoreElements()和nextElement(),作用和Iterator中的hasNext()和next()功能一致。
import java.util.Enumeration;
import java.util.Vector;
public class TestEnumeration {
public static void main(String[] args) {
Vector<String> vector = new Vector<>();
vector.add("javase");
vector.add("html");
vector.add("oracle");
Enumeration<String> en = vector.elements();
while(en.hasMoreElements()){
System.out.println(en.nextElement());
}
}
}
Enumeration还有个子类StringTokenizer,和split类似用于字符串分割,不过不支持正则,而split是支持的
public class TestStringTokenizer {
public static void main(String[] args) {
String str = "this is a cat;that is a mice;i am the god";
StringTokenizer token = new StringTokenizer(str,";");
while(token.hasMoreElements()){
System.out.println(token.nextElement());
}
}
}
//输出:this is a cat
that is a mice
i am the god
容器的同步控制与只读设置
对于ArrayList、HashMap和HashSet,其实线程都是安全的,不过可以通过Collections中的方法将其包装为线程安全。
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* 使用Collections管理同步容器
* synchronizedList
* synchronizedMap
* synchronizedSet
* @author Administrator
*
*/
public class Demo01 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
//将list制作成线程安全的,也就是同步的
Collections.synchronizedList(list);
}
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)
* @author Administrator
*
*/
public class Demo02 {
public static void main(String[] args) {
Map<String,String> map = new HashMap<>();
map.put("aa", "11");
map.put("bb", "22");
//只读控制
Map<String, String> map2 = Collections.unmodifiableMap(map);
// map2.put("cc","33");
//会报错,因为容器的容量已经被unmodifiableMap包装成不可变
// System.out.println(map.size());
List<String> list = Collections.singletonList(new String());
// list.add("a"); -->报错,因为singletonList只能包含一个元素
// list.add("b");
System.out.println(list.size());
}
public static Set<String> oper(Set<String> set){
if(set==null){
//外部避免处理空指针异常的问题
return Collections.EMPTY_SET;
}
return set;
}
}