全教育培训行业第三方平台平台就业机构
扫码试听
扫码试听
Q:2638333071
首页 > 零基础学习 > 软件开发 > > arraylist底层原理jdk11和1.8区别(java的arraylist和linkedlist)
行业动态 行业问答 课程问答 零基础学习 就业前景 技术干货

arraylist底层原理jdk11和1.8区别(java的arraylist和linkedlist)

发布时间:4 周 前 栏目:软件开发 浏览:

1、arraylist底层原理jdk11和1.8区别

arraylist底层原理jdk11和1.8区别是

jdk11表述有误,应为jdk1.7

【1】JDK1.7中的ArrayList底层

// 多态实现 使用前两种方式进行创建集合的话

// 扩展性很高 (建议使用前两种方式进行创建,因为由于Collection接口中没有get方法)

// 使用集合中最大的父接口进行指向 ArrayList 实现类 Collection >>> ArrayList(爷-->孙级)

// 使用父接口进行创建 List-->ArrayList(父子级)

List l = new ArrayList(); // 所以 使用父子级进行创建是最佳选择

// 直接使用 ArrayList 类进行创建实体对象 (不建议直接使用该类进行创建 扩展性低)

注意:1.7中默认创建一个ArrayList集合的时候,默认长度为10,也就是size=10;

// 多态实现 使用前两种方式进行创建集合的话

// 扩展性很高 (建议使用前两种方式进行创建,因为由于Collection接口中没有get方法)

// 使用集合中最大的父接口进行指向 ArrayList 实现类 Collection >>> ArrayList(爷-->孙级)

// 使用父接口进行创建 List-->ArrayList(父子级)

List l = new ArrayList(); // 所以 使用父子级进行创建是最佳选择

// 直接使用 ArrayList 类进行创建实体对象 (不建议直接使用该类进行创建 扩展性低)

输出:

[zhangsan, lisi] // 默认使用ArrayList中的toString方法进行输出

注意:调用add方法向底层数组中添加元素,最开始size为0,添加元素以后size+1操作,添加成功返回true.

当数组中的10个位置都满了的时候就开始进行数组的扩容,使用add方法中的ensureCapacityInternal约束中的grow()方法进行扩容,将老数组中的内容赋值给新数组返回新数组,长度为原数组的1.5倍(也就是15),15要是满了就以此类推可以有无限长度。

1.7中的ArrayList中最主要的就是new一个ArrayList时,长度默认初始化为10.

【2】DK1.8中的ArrayList底层

最主要的是:在JDK1.8中newArrayList时,会给出一个空的数组,当调用add方法时,这时候才会把数组的长度设置为10,要是满了,会自动扩容。

JDK1.7:只要newArrayList时,就会给数组默认值为10,这样其实没必要,浪费资源,影响性能。

JDK1.8:newArrayList时候会给出一个空的数组,但是当调用add方法时,这时才会给出长度为10的数组。

arraylist底层原理jdk11和1.8区别

2、arraylist和linkedlist的区别

arraylist和linkedlist的区别:

一、查找元素方法不同:

1、arraylist可以直接通过数组下标找到元素。

2、linkedlist要通过移动指针遍历每个元素,直到找到需要的元素为止。arraylist查找元素的速度比linkedlist快。

二、空间消耗。

1、arraylist的空间浪费主要体现在在list结尾预留了一定的容量空间。

2、而linkedlist的空间浪费则体现在它的每一个元素都要消耗一定的空间。

三、原理不同。

1、arraylist是基于动态数组实现的非线程安全集合。

2、linkedlist是基于链表实现的非线程安全集合。

四、删除元素。

1、arraylist在新增和删除元素时,可能扩容和复制数组。

2、而linkedlist实例化对象只需要修改指针即可。

arraylist底层原理jdk11和1.8区别

3、java中List存值的原理,就是为什么能往List里面存值。还有Struts2为什么能直接匹配jsp里面的值。

Lisp存值的原理,以前servlet是要通过Primary获取页面的值为什么Struts2中直接定义一个和jsp中name相同的属性就行了呢,原理是什么。求大侠解答

4、arraylist和vector的区别

arraylist和vector的区别是什么呢?视频详细介绍,分分钟懂了

上一篇:没有了
技术干货