数据结构-增强数据的功能
这里是修真院后端小课堂,每篇分享文从 【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】 八个方面深度解析后端知识/技能,本篇分享的是: 【数据结构-增强数据的功能】 【修真院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?||?index?>?)?{ ??????IllegalArgumentException()} ???(==?.)?{ ??????resize(*?.)} ???[index]?=?e++} 修改数组的某个位置的元素 (indexe)?{ ???(index?||?index?>?)?{ ??????IllegalArgumentException()} ???[index]?=?e} 查找数组 (e)?{ ???(i?=i?(e)?{ 删除数组 (index)?{ ???(index?||?index?>?-)?{ ??????IllegalArgumentException()} ???(./){ ??????resize(./)} ???temp?=?[index](i?=?indexi? |