JAVA的数据结构一点点心得。

首先要有一个大致的总体体系,
在这里插入图片描述
这是从网上看到的,感觉还不错,就复制过来了,千万别告我侵权。

首先我们先从我们最熟悉的数组开始说,之前面试的时候,问到数组问题的时候,就想某些List的底层是数组结构,然后说增删慢,查询快,但是如果你真的去了解一下底层的话,这说法太笼统,但是实际比对还真的是没有办法做到那么细致,所以很不容易发现问题,所以我专门的去看了一下相关的书籍,也做了一些简单的测试。总结了几下几点内容。

  1. 首先我们先说查询快,其实你可以想一下,如果数组,我们查询是根据下标内容来查询的话,那是很快的,但是通常情况我们是根据什么来查找呢,我们是根据元素值来查找的,
    给定一个元素值,对于无序数组,我们需要从数组第一个元素开始遍历,直到找到那个元素。

有序数组通过特定的算法查找的速度会比无序数组快。

  1. 增删问题上来说,
    首先我们先说说增加
    对于无序的数组来说,元素没有按照从大到小或者某个特定的顺序排列,只是按照插入的顺序排列。无序数组增加一个元素很简单,只需要在数组末尾添加元素就ok了,但是有序数组却不一定了,它需要在指定的位置插入。要是是一个升序的数组1-200,你插入了一个100,那么就会在中间插入,那就意味着他回去先看前面的100个数,所以,插入的时候对无序数组来说是快的。

而对删除来说,根据元素值删除,我们要先找到该元素所处的位置,然后将元素后面的值整体向前面移动一个位置。也需要比较多的时间。

数组结构还有一个最大的缺点,那就是动态扩容问题,他是没有办法解决的,
数组一旦创建之后,大小固定了,那么注定了他不能的动态扩展数组中元素的个数,如果初始化的时候给的贼大,不好意思,资源浪费,如果初始化的时候给的贼小,不好意思数据有点多,装不下。

很显然,数组虽然插入快,但是查找和删除都比较慢,而且扩展性差,所以我们一般不会用数组来存储数据

既然数组结构的弊端这么明显,我们是不是有一种数据结构插入、查找、删除都很快,而且还能动态扩容,这肯定有,但是都不是绝对的,在某种特殊情况下确实有,下面再继续介绍。

以上的都是文字描述,确实很恶心,所以大家凑活看,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

丶懿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值