java如何使用arraylist(一起来聊聊Java中的ArrayList)
java如何使用arraylist(一起来聊聊Java中的ArrayList)作者承认他写错了在无数次的良心不安与对知识的追求下,终于找到了真相:真相就是作者写错了。ArrayList 中的继承关系不知道各位朋友有没有发现其中的端倪呢?好吧,不卖关子了。ArrayList 的直接父类是AbstractList,AbstractList 的已经实现了List 这个接口,那么ArrayList 为什么还要实现List 接口呢 ?不知道各位小伙伴们有没有过这样的疑惑?本着阅读优秀人的代码,就是去读那个人的思想,就是去走进那个人的内心世界原则。于是,什么面向接口编程,什么高内聚,低耦合,什么开放-封闭原则,什么单一职责。能往上靠的都靠上。嗯,优秀的人,写的代码就是优秀,写得真好,设计得真完美!
提起ArrayList相信对于java开发人员来说并不会感到陌生,甚至会有种亲切感。好像每次出去面试,多多少少都会跟它扯上点关系。所以导致网上以及各大培训机构都对其源码有着丰富的解读。
但是,本篇文章并不是去解读底层源码的:“底层是用什么实现的,默认初始化容量是多大,是不是线程安全的,是怎么进行扩容的 ” 这些老生常谈的问题。
前段时间,本人闲来无事,本来阅读优秀框架代码,提升自己能力的思想觉悟去翻了一下其底层代码,发现了一个好玩的事。这里先卖个关子。
我们先来看一下ArrayList 的继承图:
ArrayList 中的继承关系
不知道各位朋友有没有发现其中的端倪呢?好吧,不卖关子了。ArrayList 的直接父类是AbstractList,AbstractList 的已经实现了List 这个接口,那么ArrayList 为什么还要实现List 接口呢 ?不知道各位小伙伴们有没有过这样的疑惑?
本着阅读优秀人的代码,就是去读那个人的思想,就是去走进那个人的内心世界原则。于是,什么面向接口编程,什么高内聚,低耦合,什么开放-封闭原则,什么单一职责。能往上靠的都靠上。嗯,优秀的人,写的代码就是优秀,写得真好,设计得真完美!
在无数次的良心不安与对知识的追求下,终于找到了真相:真相就是作者写错了。
作者承认他写错了
上面的截图中的人说,他曾经就这个问题问过Josh Bloch,Josh Bloch 承认说那是个错误。作者在写的时候,想着实现List 接口可能会有一些用。后来jdk维护者们,认为不值得为这么个美丽的错误而去修改,就没有修改它了。
好了,今天的分享就告一段落了,感谢各位听我水了这么多没用的,哈哈~