当前位置: 首页 > article >正文

Java核心技术知识点笔记—视图与包装器

前言:通过使用视图(views)可以获得其他实现了Collection接口和Map接口的对象。映射类的keySet方法就是一个示例。keySet方法返回一个实现Set接口的类对象,这个类的方法对原映射进行操作。这种集合称为视图。

1、轻量级集合包装器:Arrays

(1)静态方法asList返回一个包装了普通Java数组的List包装器;

(2)返回的对象不是ArrayList,是一个视图对象,带有访问底层数组的get和set方法。

(3)改变数组大小的所有方法(例如add和remove)都会抛出一个UnsupportedOperationException。

(4)可以接受可变数目的参数。

2、子范围:

(1)可以为很多集合建立子范围(subrange)视图。例如,使用subList方法获得一个列表的子范围视图:

List<String> subList = list.subList(1, 5);

第一个索引包含在内,第二个索引不不包含在内。

(2)可以将任何操作应用于子范围,并且能够自动地反映整个列表的情况。

(3)对于有序集和映射,可以使用排序顺序而不是元素位置建立子范围;

3、不可修改的视图:

(1)Collections有几个方法产生集合的不可修改视图(unmodifiable views)。这些视图对现有集合增加了一个运行时检查,如果发现试图对集合进行修改,将抛出一个异常。

(2)不可修改视图并非集合本身不可修改。通过集合的原始引用仍可以对集合进行修改,也可以让集合的元素调用更改器方法。

(3)视图只是包装了接口而非实际集合对象,只能访问接口中定义的方法。

4、同步视图:

(1)如果有多个线程访问同一个集合,必须确保集不会被意外破坏。

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

5、受查视图:对泛型类型发生问题时提供调试支持。受限于虚拟机可以运行的运行时检查。


http://www.kler.cn/a/7299.html

相关文章:

  • 现代密码学|公钥密码体制 | RSA加密算法及其数学基础
  • git push时报错! [rejected] master -> master (fetch first)error: ...
  • Flutter:Dio下载文件到本地
  • 01.02、判定是否互为字符重排
  • 基础IO2
  • 006.精读《Apache Paimon Docs - Concepts》
  • 【视频分割】【深度学习】MiVOS官方Pytorch代码--Propagation模块解析
  • No.026<软考>《(高项)备考大全》【第10章】项目沟通和干系人管理(第2部分-干系人管理)
  • 【C语言进阶:自定义类型详解】枚举
  • 8个全球性编程比赛,天才程序员的梦想舞台
  • 零中频接收机中的杂散信号
  • 信息收集与运用
  • 蓝桥杯基础9:BASIC-6试题 杨辉三角形
  • 算法竞赛进阶指南0x61 最短路
  • 第一批被AI淘汰的人已经出现,你距离失业还有多远?
  • 【ansible】实施任务控制
  • 分享一个免梯子的GPT,刷题和学习的好帮手
  • 论文笔记 | 标准误聚类问题
  • 【剪枝】个人练习-Leetcode-167. Two Sum II - Input Array Is Sorted
  • Rsync远程同步
  • 黑客在供应链攻击中破坏 3CX 桌面应用程序
  • 大数据与互联网的结合
  • 复旦微ZYNQ7020全国产替代方案设计
  • 10道关于垒球规则的判断题·你答对了多少
  • 形式语言总结
  • Vue中的slot插槽