package ch11collection;//: containers/ReadOnly.java // Using the Collections.unmodifiable methods. import java.util.*; import net.mindview.util.*; import static net.mindview.util.Print.*; /** * 只读的集合类 */ public class ReadOnly { static Collection<String> data = new ArrayList<String>(Countries.names(6)); /** * 获取不可更改的集合类 */ public static void unmodify() { Collection<String> c = Collections .unmodifiableCollection(new ArrayList<String>(data)); print(c); // Reading is OK // ! c.add("one"); // Can't change it List<String> a = Collections.unmodifiableList(new ArrayList<String>( data)); ListIterator<String> lit = a.listIterator(); print(lit.next()); // Reading is OK // ! lit.add("one"); // Can't change it Set<String> s = Collections.unmodifiableSet(new HashSet<String>(data)); print(s); // Reading is OK // ! s.add("one"); // Can't change it // For a SortedSet: Set<String> ss = Collections.unmodifiableSortedSet(new TreeSet<String>( data)); Map<String, String> m = Collections .unmodifiableMap(new HashMap<String, String>(Countries .capitals(6))); print(m); // Reading is OK // ! m.put("Ralph", "Howdy!"); // For a SortedMap: Map<String, String> sm = Collections .unmodifiableSortedMap(new TreeMap<String, String>(Countries .capitals(6))); } } /* * Output: [ALGERIA, ANGOLA, BENIN, BOTSWANA, BULGARIA, BURKINA FASO] ALGERIA * [BULGARIA, BURKINA FASO, BOTSWANA, BENIN, ANGOLA, ALGERIA] {BULGARIA=Sofia, * BURKINA FASO=Ouagadougou, BOTSWANA=Gaberone, BENIN=Porto-Novo, ANGOLA=Luanda, * ALGERIA=Algiers} */// :~