java里有数组了为什么还要搞个 ArrayList 呢?

数组和 ArrayList 都可以用来存储一组数据,但它们有不同的特点和适用场景,下面是它们的具体比较:

1.数组是静态的,其长度在声明的时候就已经确定了,而且不能动态扩展或缩小,如果需要存储更多的数据需要重新定义数组大小,这可能会带来一些问题,例如浪费内存或发生数组越界等。

2. ArrayList 是动态的,长度可以根据需要自动调整,可以方便地添加或删除元素,而且不会浪费内存空间。

3. 数组可以存储基本数据类型和对象,而 ArrayList 只能存储对象。如果需要存储基本数据类型,需要使用对应的包装类。

4. 数组可以使用下标直接访问各个元素,而 ArrayList 只能通过遍历或使用迭代器来访问元素。

综上所述,虽然数组和 ArrayList 都可以用来存储数据,但在实际开发中应根据实际情况来选择使用哪一种数据结构,如需要动态存储或不方便确定数组长度时,应使用 ArrayList。

举个栗子:

假设我们有一个需求,需要存储一组学生的信息,包括学生姓名、年龄、学号等,如果使用数组来存储,我们需要预先定义一个长度,举例来说,定义一个长度为100的数组,用于存储100个学生的信息,这可能会浪费一些内存空间,而且如果需要存储更多的学生信息,就需要重新定义一个更大的数组,再将原来的数据拷贝到新数组中,这可能会带来一些麻烦。

如果使用 ArrayList 就可以避免这个问题。在使用 ArrayList 时,我们可以不用预先定义长度,只需要在需要添加一个新的学生信息时,直接将该学生的对象添加到 ArrayList 中即可。ArrayList 会根据需要自动调整大小,从而避免了浪费内存空间的问题。

此外,如果需要频繁添加或删除学生信息时,ArrayList 的性能也会比数组好一些,因为数组在插入或删除元素时,需要移动其他元素的位置,而 ArrayList 可以很方便地实现插入和删除操作。

总结:

1.数组是静态的,其长度在声明的时候就已经确定了,而且不能动态扩展或缩小,如果需要存储更多的数据需要重新定义数组大小,这可能会带来一些问题,例如浪费内存或发生数组越界等。

2. ArrayList 是动态的,长度可以根据需要自动调整,可以方便地添加或删除元素,而且不会浪费内存空间。

3. 数组可以存储基本数据类型和对象,而 ArrayList 只能存储对象。如果需要存储基本数据类型,需要使用对应的包装类。

4. 数组可以使用下标直接访问各个元素,而 ArrayList 只能通过遍历或使用迭代器来访问元素。

综上所述,虽然数组和 ArrayList 都可以用来存储数据,但在实际开发中应根据实际情况来选择使用哪一种数据结构,如需要动态存储或不方便确定数组长度时,应使用 ArrayList。

通常我们在使用的时候,如果在不明确要插入多少数据的情况下,普通数组就很尴尬了,因为你不 知道需要初始化数组大小为多少,而 ArrayList 可以使用默认的大小,当元素个数到达一定程度 后,会自动扩容。 可以这么来理解:我们常说的数组是定死的数组,ArrayList 却是动态数组。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农落落

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值