加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

数据结构-增强数据的功能

发布时间:2020-12-14 06:35:55 所属栏目:Java 来源:网络整理
导读:这里是修真院后端小课堂,每篇分享文从 【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】 八个方面深度解析后端知识/技能,本篇分享的是: 【数据结构-增强数据的功能】 【修真院java小课堂】数据结构-增

这里是修真院后端小课堂,每篇分享文从

【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】

八个方面深度解析后端知识/技能,本篇分享的是:

【数据结构-增强数据的功能】

【修真院java小课堂】数据结构-增强数据的功能

大家好,我是IT修真院深圳分院第12期的学员,一枚正直纯洁善良的java程序员,今天给大家分享一下,修真院官网java任务10,拓展的内容-数据结构之增强数组。

(1)背景介绍

程序=数据结构+算法,都说不会数据结构跟算法的软件工程师不是好的程序员,数组作为数据结构中很基础的一种,学习跟跟深入了解非常有必要。今天的小课堂以数组为基础,将数组封装起来,给其添加增删改查和扩容等功能。

(2)知识剖析

a)数组的特点

数组的长度一旦定义则不能改变

数组中的元素都有整数索引

数组只能存储同一类型的元素

数组即可以存储基本数据类型,又可以存储引用数据类型

b)数组的优缺点

由于数组每个元素都是有索引的,所以访问数组的任一元素是非常快的,复杂度为O(1)级别,但是往数组任意一个位置插入数据则不方便,因为每次插入一个元素,后面的元素就要往后挪动一位。时间复杂度为O(n),因此如果需求是频繁地查询比较适合用数组。

c)改进数组

可以给数组加上自动扩容地功能。

(3)常见问题

数组和链表的比较?

(4)解决方案

获取结点:只能遍历链表,然后一个一个查看

添加结点(在结点2后面添加一个结点9):

把结点2的下一个结点地址值修改为新结点9的地址值,把新结点9的下一个地址值改为结点3的地址值

链表特点:查询慢,增删快;

(5)编码实战

5.1将数组封装起来

这里要说明下是使用了泛型,也就是往这个自定义的数组容器中放任何东西。(除了基本类型?)

com.ch0918.arrayArray<>?{
???[]?(capacity)?{
??????=?([])Object[capacity]=?}
???()?{
??????()}
}

给数组添加新功能,例如得到数组的大小,数组的容量,判断数组是否为空。//得到数组的大小

()?{
???}
()?{
???.}
()?{
???==?}

往数组里新增元素,特别注意这里是做了自动扩容处理的,当数组里的元素达到数组的长度是,就将数组的容量扩大到数组原来的两倍。

(e)?{
???addElement(e)}
(indexe)?{
???????(index??)?{
??????IllegalArgumentException()}
???(==?.)?{
??????resize(*?.)}
???[index]?=?e++}

(e)?{
???addElement(e)}

修改数组的某个位置的元素

(indexe)?{
???(index??)?{
??????IllegalArgumentException()}
???[index]?=?e}

查找数组

(e)?{
???(i?=i?(e)?{
???(i?=?i?<?i++)?{
??????([i]?==?e)?{
?????????i}
???}
???-}

删除数组

(index)?{
???(index??-)?{
??????IllegalArgumentException()}
???(

扩容的方法

(capacity)?{
???Array<>?newArray?=?Array<>(capacity)System.(newArray.)=?newArray.}

(6)拓展思考

(7)参考文献

【参考一】

(8)更多讨论

Q1:基于数组的数据结构常见的有哪些?

A1:java中以数组为基础的最常见就是ArrayList了,一般查询操作比较频繁,并且元素可重复,并且不需要以key-value形式存储的,都会选择用ArrayList存储数据。

Q2:什么时候适合用数组

A2:当索引是有意义的,比如一个班的学生,学号是对应一个学生(当然学号不能太大,比如1,2,3...)这时候用数组比较适合。

Q3:除了数组这种线性数据结构,还有哪些线性的数据结构?

A3:另外还有链表,栈,队列。

(9)鸣谢

(10)结束语

今天的分享就到这里啦,欢迎大家点赞、留言、转发、抛砖~

PPT链接?视频链接

更多内容,可以加入IT交流群565734203与大家一起讨论交流

这里是技能树·IT修真院:,初学者转行到互联网的聚集地

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读