Java中ArrayList与顺序表怎么定义与实现


这篇文章主要介绍“Java中ArrayList与顺序表怎么定义与实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java中ArrayList与顺序表怎么定义与实现”文章能帮助大家解决问题。线性表是最基本、最简单、也是最常用的一种数据结构。线性表(linear list)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。常见的线性表:顺序表、链表、栈、队列…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。集合中必存在唯一的一个“第一元素”。集合中必存在唯一的一个 “最后元素” 。除最后一个元素之外,均有唯一的后继(后件)。除第一个元素之外,均有唯一的前驱(前件)。顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。首先我们需要创建一个数组来存放数据。备注:因为我为了方便就先创建的整形数组,为了能更好的适应各种类型,大家可以创建泛型的数组,我这里就没写了。接下来就是对顺序表的各种操作。例如:基本的CURD,打印顺序表,获取顺序表长度,清空顺序表等等。因为是数组,所以直接遍历数组打印就好了增加元素的时候需要考虑到数组是否满状态的问题,所以我们需要判断,要死数组空间已满,我们还需要进行扩容。另外,我们还需要判断在这个pos位置是否合法。判断空间是否已满方法这里我们简化代码为:如果要扩容的话,在扩容完成之后,因为顺序表是连续的结构,所以在pos位置新增元素的话,那么pos位置之后的元素就要依次往后挪。这样才能把元素新增进去。注意:在扩容之后我们需要更改CAPACITY和usedSize的大小。在这我们需要考虑到此时数组是否为空的情况。之后还是直接遍历数组的操作。在这里也需要一免费云主机域名次判空操作。这里可能会出现数组为空的情况和pos不合法的情况,所以需要判断。我这里是手动抛出的异常,没有另外写了。删除某个位置上的元素,这里是直接从这个元素开始,让其后面的元素覆盖掉他前一个元素,以达到删除的目的。后面这几个操作比较简单就不多叙述了。在集合框架中,ArrayList是一个普通的类,实现了List接口,具体框架图如下:[说明]ArrayList实现了RandomAccess接口,表明ArrayList支持随机访问。ArrayList实现了Cloneable接口,表明ArrayList是可以clone的。ArrayList实现了Serializable接口,表明ArrayList是支持序列化的。和Vector不同,ArrayList不是线程安全的,在单线程下可以使用,在多线程中可以选择Vector或者CopyOnWriteArrayList。ArrayList底层是一段连续的空间,并且可以动态扩容,是一个动态类型的顺序表。循环遍历foreach遍历迭代器顺序表和数组的区别:上面说,顺序表的底层可以理解为一个数组,但是相比于数组,更加的高级。顺序表可以自己扩容;顺序表严格区分数组容量和元素的个数。所以数组其实就是一种不完备的顺序表。顺序表中的注意点:我们需要区分顺序表中的两个概念:容量(capacity)和元素个数(size)。容量可以理解为数组的大小(长度),元素个数是size中记录的有效元素个数。顺序表中,数据的存储是需要连续的,不可以元素和元素之间存在“空隙”,当进行插入、删除等操作时,操作完成后,也要保证顺序表的连续。关于“Java中ArrayList与顺序表怎么定义与实现”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注百云主机行业资讯频道,小编每天都会为大家更新不同的知识点。

相关推荐: html中meta是什么

今天小编给大家分享一下html中meta是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。 在html中,meta是head区一个辅助性标签的…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 03/28 21:11
下一篇 03/29 10:02

相关推荐