9.4 视图和包装器

1 轻量级集合包装器

Card[] cardDeck = new Card[52];
. . .
List cardList = Arrays.asList(cardDeck);

2 子范围

List group2 = staff.subList(10, 20);
group2.clear(); // staff reduction
SortedSet<E> subSet(E from, E to)
SortedSet<E> headSet(E to)
SortedSet<E> tailSet(E from)
SortedMap<K, V> subMap(K from, K to)
SortedMap<K, V> headMap(K to)
SortedMap<K, V> tailMap(K from)
//就是可以主动设置是否包含而已
NavigableSet<E> subSet(E from, boolean fromInclusive, E to, boolean toInclusive)
NavigableSet<E> headSet(E to, boolean toInclusive)
NavigableSet<E> tailSet(E from, boolean fromInclusive)

3 不可修改的视图

Collections.unmodifiableCollection
Collections.unmodifiableList
Collections.unmodifiableSet
Collections.unmodifiableSortedSet
Collections.unmodifiableNavigableSet
Collections.unmodifiableMap
Collections.unmodifiableSortedMap
Collections.unmodifiableNavigableMap

4 同步视图

线程安全

Map<String, Employee> map = Collections.synchronizedMap(new HashMap<String, Employee>());

5 检测视图

ArrayList<String> strings = new ArrayList<>();
ArrayList rawList = strings; // warning only, not an error, for compatibility with legacy code
rawList.add(new Date()); // now strings contains a Date object!
//这样就会检测加入的元素的类型了
List<String> safeStrings = Collections.checkedList(strings, String.class);

6 关于可选操作的说明

你可能感兴趣的:(Java学习)