corejava基础知识(6)-视图

集合包装器视图

Array包装成List:

Card[] cardArray = new Card[52];
List<Card> cardList = Arrays.asList(cardArray);
复制代码

Arrays类的静态方法 asList 将返回一个包装了 List 的包装器。 注意返回的是视图对象,它只能使用getset方法。

Map包装成Set:

  • Set<Map.Entry<K, V>> entrySet()返回Map.Entry对象的一个集视图。
  • Set<K> keySet() 返回映射中所有键的一个集视图。
  • Col1ection<V> values() 返回映射中所有值的一个集合视图。

可以从集视图中删除元素,映射中对应的键和值也会被删除, 不过不能增加任何元素。

子范围视图

可以为集合建立子范围视图

List group2 =staff.subList(10, 20); // 列表的子范围

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);
复制代码

注意:

  • 范围是左闭右开
  • 可以将任何操作应用于子范围, 并且能够自动地反映到原范围。
  • 对顺序集合对子集合添加元素时,新元素必须在子范围内

不可修改的视图

顾名思义生成不可修改的视图,如果发现试图对集合进行修改,就抛出一个异常。当然原对象肯定还是可以修改的。

例如:生成一个不可修改的Map视图:

TreeMap<String, Integer> scores = new TreeMap<>();
...
Map<String, Integer> umMap = Collections.synchronizedSortedMap(scores);
复制代码

同步视图

类库的设计者使用视图机制来确保常规集合的线程安全,而不是实现线程安全的集合类。

例如:新建一个线程安全的Map:

Map<String, Employee〉map = Collections.synchronizedMap(new HashMap<String, Employee>());
复制代码

受查视图

受查视图可以查出 将错误类型的元素混人泛型集合 这种情况。

例如:

List<String> safestrings = Collections.checkedList(strings,String,class);
复制代码

当加入错误类型时,会得到错误报告。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值