9.4 java视图与包装器

最近自己打算重新整理整理java基础的知识,所以挑了获得大家一致好评的《core java》这本书来学习学习,顺便把自己所读到的有疑惑的地方做个解读,做成一个专题分享出来,如果有错误的地方,欢迎指出。如果您想要高清PDF第10版的《core java》书籍,可以文章下评论留言,留下个人邮箱,本人第一时间看到会发送给您。

直入话题吧,先挑了集合章节来看,在“视图”概念上和“轻量级集合包装器”这一小节有些地方产生了疑惑,所以打算分析分析。

视图

视图,这个概念一开始有些不明白,先不说概念啥的,来看一下HashMap的keySet方法的源码先。

相信看完上面的 source code , 大家对视图有个大概的了解了吧。是不是对书本中的这句话有了清晰的认识:“取而代之的是:keySet 方法返回一个实现Set接口的类对象, 这个类的方法对原映射进行操作。这种集合称为视图。”

轻量级集合包装器

Arrays类的静态方法asList将返回一个包装了普通Java数组的List包装器,这个包装器就是一个视图对象(Arrays类中的一个继承了AbstractList的内部类对象),并不是ArrayList对象,上源码:


为什么说“改变数组大小的所有方法(例如,与迭代器相关的add和remove方法)都会抛出一个Unsupported OperationException异常。”?因为这个内部类ArrayList的add和remove方法是继承AbstractList的,并没有重写,可以看看AbstractList这两个方法的源码,其实就是抛出Unsupported OperationException(子类可以重写这两方法)

接下来,我们再看看Collections.nCopies方法的源码,到底长啥样。


今天的疑惑分析就到这,有错误的地方欢迎指出,欢迎来讨论。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值