字节跳动一面,面试官问我集合和数组有什么区别?我回答了3点,面试官给我竖起了大拇指...

为什么要有集合?

  通过几个月的学习,我发现我们始终在跟数据打交道,如何传输数据,如何接收数据,如何存储数据。生活中我们有各种各样的容器,比如袋子,碗,水果篮,箱子,甚至车的后备箱都能看作是一个容器。这些容器有什么异同呢,它们都有一个功能那就是能装东西,不同的是它们的容量不同,它们有的大有的小,有的是封闭的,有的不是封闭的。正是有了这些容器才使得我们的生活更有质量。

  同样的,在java中也存在各种各样的‘容器’,我们把java中所有的‘容器’的总称叫做集合。它在JavaSE阶段有着举足轻重的地位,望诸君好好学。

  首先谈谈我对集合的理解,在写这篇文章时,我已经过了五遍集合的基础知识了。集合在我看来就是一个存储数据的‘容器’。它的继承体系非常庞大,我们初学,目前只需了解一下集合。关于集合的加强后面会有个专门的文章。

Collection(接口)
    |--List(接口)
        |--ArrayList(类)
        |--LinkedList(类)
    |--Set(接口)
        |--HashSet(类)
        |--TreeSet(类)
Map(接口)
    |--HashMap(类)
    |--TreeMap(类)

  上面就是集合中的容器,它们的存储数据的形式各不相同。出现这种现象的原因是因为在Java中,集合底层封装了不同的数据结构,这里面的学问深不见底,望初学者也不要一头扎进去,这样会给自己压力。

数组VS集合

  数组是固定长度的,而我们的集合呢?如意金箍棒好吧,但是这个金箍棒有点问题,只能变长。能变长的比不能变的好吧,这大家都没异议吧,没人喜欢固定长度的吧(手动狗头)。题外话不说了,先看看它两的区别。

  1. 数组的长度不可变,集合的长度可变
  2. 数组存储的是同一个类型的数据,集合可以存储不同类型的数据
  3. 数组既可以存储基本数据类型,也可以存储引用类型。集合只能存储引用类型

我们说集合优于数组的主要原因是集合能存储引用类型的数据且长度可变(面向对象编程,存普通数据场景较少,但是没数组也是不行的)。而且一般集合也是存储同一类数据的。

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
| 名称 | 区别 | | --- | --- | | 数组 | 1. 数组长度固定,一旦创建后无法动态扩容或缩容;<br>2. 数组元素的访速度快,因为数组中的元素在内存中是连续存储的;<br>3. 数组只能存储相同数据类型的元素。 | | List | 1. List 长度可变,可以动态扩容或缩容;<br>2. List 插入和删除元素的效率较高,但访元素的效率相对较低;<br>3. List 可以存储不同数据类型的元素。 | 补充说明: - 数组的长度是固定的,一旦创建后无法动态扩容或缩容。如果需要增加或减少元素,就需要先创建一个新的数组,再将原来数组中的元素复制到新数组中。因此,数组的插入和删除操作比较麻烦。 - 数组中的元素在内存中是连续存储的,因此数组的访速度非常快。可以通过下标直接访数组中的元素。 - 数组只能存储相同数据类型的元素。如果需要存储不同数据类型的元素,就需要使用 Object 类型的数组来存储,但这样会带来类型转换的题。 - List 的长度是可变的,可以动态扩容或缩容。在添加或删除元素时,List 会自动进行扩容或缩容操作。 - List 的插入和删除效率较高,因为可以通过指针或引用来修改链表中的元素。但是,访元素的效率相对较低,因为需要通过索引或迭代器查找元素的位置。 - List 可以存储不同数据类型的元素,因此非常灵活。在 Java 中,可以使用泛型来限制 List 中的元素类型,避免类型转换的题。 在实际开发中,我们需要根据具体的需求选择合适的数据结构。如果需要经常插入或删除元素,应该使用 List;如果需要频繁访元素,应该使用数组。同时,我们需要注意 List 和数组在元素类型、长度可变性等方面的差异,以便正确使用和处理数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Jayden 

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

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

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

打赏作者

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

抵扣说明:

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

余额充值