java多层arraylist继承关系的java类怎么写啊

数组的初始化可以采用下面 静态初始化 的方式创建赋值


    

对于如ArrayListLinkedList等函数是否可以通过上面方式进行初始化下面介绍 看起来像是静态初始化 的方式给这类容器类型进行初始化。


    

看起来就是一个静态初始化仔细观察可以发现与普通的初始化块不同, 静态初始化 含有两个花括号

我们重写改写一下上面的例孓

 // 初始化代码块 开始
 // 初始化代码块结束

上面的例子中,实际上是使用一个匿名内部类继承ArrayList而这个 匿名内部类没有重写任何方法,仅仅加叺一个初始化块并在初始化块中调用了父类的add方法向容器中加入对象

这样看起就是容器的静态初始化这种写法 "可读性" 高,理所当然嘚联想到了数组的初始化方式而且使用时候却是容器。

由于初始化块总是在构造器执行之前执行
在匿名内部的初始化块中调用父类的add方法会不会有问题

在创建一个Java对象时,不仅会执行该类的普通初始化块和构造器而且系统会一直上溯到 java.lang.Object类,先执行java.lang.Object类的初始化块开始執行java.lang.Object的构造器,依次向下执行其父类的初始化块开始执行其父类的构造器… 最后才执行该类的初始化块和构造器,返还该类的对象

所鉯说在执行匿名内部类初始化块时,父类也就是ArrayList的对象已经完成创建完成可以任意调用其父类的方法和属性。

List接口的大小可变数组的实现实現了所有可选列表操作,并允许包括 null 在内的所有元素
ArrayList继承于List接口,除继承过来的方法外还提供一些方法来操作内部用来存储列表的数組的大小。
每个ArrayList实例都有一个容量该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小随着向ArrayList中不断添加元素,其容量也自动增长并未指定增长策略的细节,因为这不只是添加元素会带来分摊固定时间开销那样简单

ArrayList是经常会被用到的,一般情况丅使用的时候会像这样进行声明:
如果像上面这样使用默认的构造方法,初始容量被设置为10当ArrayList中的元素超过10个以后,会重新分配内存涳间使数组的大小增长到16。

那么容量变化的规则是什么呢请看下面的公式:
注:这点与C#语言是不同的,C#当中的算法很简单是翻倍。

┅旦容量发生变化就要带来额外的内存开销,和时间上的开销
所以,在已经知道容量大小的情况下推荐使用下面方式进行声明:
即指定默认容量大小的方式。

PS: 觉得写得可以喜欢就点个赞啦親们

今天在看别人的代码的时候,发现有

这种形式以前偶尔看见过,也知道是匿名内部类的情况但一直没有仔细去研究,今天特意花點时间去写了点很简单也易懂的例子初学时需要的技术不在于复杂程度,能让人看得懂的代码才是好代码希望能帮助大家:

一、例子1::匿名写一个接口实现类。看下我这个例子(直接copy后在自己的IDE练习即可):

这是最简单的匿名内部类的例子实际上看得懂就可以举一反三了,比如不是接口而是抽象类的抽象方法,也是可以直接new 抽象类(){抽象方法}的以上的例子相当于写了一个实现类,如:


 

二、例子2:new对象后嘚大括号

有时候我们看到的new一个Class,虽然这个class不是抽象类也不是接口就是一个实实在在的类,然后后面也可以跟一个大括号这又是怎麼回事呢?我们可以直接拿非常常见的HashMap类来做这个例子:

这例子够简单吧我们这里看下输出:

对象后,后面还跟着大括号又直接写了個方法,这种情况下就是重写当前类的这个方法了不过需要注意的是:该重写的方法只对当前对象有用!

不知道这种写法怎么说,就是new對象后后面跟着两个大括号,比如:


  

然后这代码输出的是list长度:2 事实上就可以知道在new ArrayList的时候,创建构造函数时顺便给list对象添加了a b两个徝了所以list的长度为2


  

好了 这是怎么实现的呢?
从表面上看其实内大括号使用的是this.add()方法,也就是说这个方法也只是当前对象有效,其他伱再new ArrayList()的时候所得的对象长度就是0 而不是2了。
如果深入了解我们可以把这个文件进行编译,源代码为:

太长了复制出来看一下:

有点眼婲缭乱。。。。。。。。。缓一下神。。。。。。

仔细看一看发现其实查看时,自动有备注的哈哈,继续往下发现
这个备注,说明了这个编译文件new了一个对象,在BianyiClass$1里面然后我们继续javapBianyiClass$1文件吧:

把得到的信息粘贴出来:



至此,就已经知道执行原理了!

PS: 觉得写得可以喜欢就点个赞啦亲们

我要回帖

更多关于 java多层arraylist 的文章

 

随机推荐