数组和ArrayList的区别与联系

(1)首先,两者都是 Java 中重要的数据结构,经常会被使用到,数组是 Java 中当中的基础数据结构,而 ArrayList 是 Java Collection 框架下的 List 的接口的一个实现类,其内部实现原理就是依靠数组去实现的,只不过数组在构建的时候就确定的数组的长度,并且是不可变化的,而 ArrayList 可以根据情况自身进行数组的扩容,来达到动态数组的功能,所以 ArrayList 可以被理解为一种动态能够变化长度的数组,并且 ArrayList 当中还提供更多的方法来方便对于顺序表的操作,例如 indexOf 来返回一个元素在 ArrayList 中的下标位置,contains() 方法返回 ArrayList 中是否包含有对应的元素,add() 方法往一个具体的位置插入元素
(2)数组在构建的时候需要声明容纳元素的类型,例如 int[] ,char[],而 ArrayList 则不声明容纳元素的类型,并且数组中的元素可以是基本数据类型或者是引用类型,而 ArrayList 只支持引用类型,ArrayList 中对于基础数据类型的储存先要将其自动装箱成对应的包装类,取出的时候也是相同的,自动拆箱成基础数据类型
(因为 ArrayList 支持泛型,如果在一开始声明 ArrayList 容纳元素类型为 Integer,那么因为泛型提供了一种类型检测的安全机制,如果下一次添加的元素不是 Integer 类型,编译器就会报错,所以会进行一个类型的检查,但是如果没有声明 ArrayList 储存元素的类型时,此时集合中可以容纳不同的数据类型的元素,例如即存放 Integer,又储存 Boolean 等)

(3)迭代方式不同,数组只能通过循环,通过元素的索引下标来达到一一遍历的目的,而 ArrayList 不仅可以使用循环来遍历,还可以通过 Iterator 或者 ListIterator 来进行遍历(更好的将遍历的代码和集合本身的类型隔离开来,无需知道集合的内部结构,只需要通过操作 Iterator 迭代器,让它来达到遍历的目的,例如起先是遍历 List 集合中的元素,一旦不使用转而去遍历 Set 集合,也无需进行遍历代码的修改,而循环遍历则需要紧密的根据集合的结构来构建遍历的代码,一旦发生集合类型的变换,遍历的代码也需要发生修改)
(4)数组中通过length来得知数组的长度,这个长度是数组的总长度而不是数组中的元素个数,length 储存在对象头中的类型指针当中,而 ArrayList 中通过 size () 方法来获取当前集合中的元素个数,同样也是 ArrayList 的长度,它是通过在内部维护了一个变量,当集合发生元素的添加或者删除时,对这个变量进行维护,所以 size() 方法返回的就是这个变量的值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值