首页 > 编程知识 正文

java创建数组后还能改变吗,java字符串怎么比较

时间:2023-05-04 13:21:28 阅读:31865 作者:3216

在java中,数组被定义为基本类型,可以从下标中检索相应位置的数据。 那么,这种结构的数据是如何存储在内存中的呢?

数组的结构图如上图所示,数组是内存中连续的存储单元,各数据依次排列在各单元中。 分析这一结构,可以得出以下结论。 要创建数组,必须声明长度以在存储器中找到适当的连续存储单元。 也就是说,数组的大小是固定的,不能动态调整大小。 时间的复杂性是o(1),因为尝试检索数组的第I个元素时,可以直接根据地址找到它。 同样修改。 数组一般表示为查询,需要遍历才能找到一个元素,时间复杂度为o(n )。 由于地址连续,在数组中插入元素很复杂。 因为需要将插入位置后面的所有元素向后移动一位。 同样,删除也只是移动方向积极。 然后,数组填满后,就不能再插入了。 数组占用整个内存,因此可能会出现大量碎片,或者找不到合适的内存块,从而导致存储失败。 总之,数组大小恒定,检索快速,添加删除复杂,需要完整的内存块,容易产生碎片。 链表是一种不连续存储在内存中的离散存储结构,每个数据元素通过指针指向以下元素的地址: 根据指针域的不同,链表可以分为单链表、双向链表、循环链表等。 这里只分析单链表。 图像如下所示。 使用链表的结构图像分析此结构可以得出一个动态调整大小的结论,因为声明链表时不需要知道其长度,也不需要连续的内存块。 链表中的每个元素都分为数据域和指针域,数据域是实际存储的数据,指针域指向以下元素的地址: 与数组相比,每个元素占用的内存更大。 获取链表的第I个元素将变得复杂。 因为地址存储在前一个元素的指针字段中,所以I次操作只能从第一个元素开始。 同样修改。 链表的查询表示也很常见,需要遍历,时间复杂度为o(n )。 添加和删除元素很有用。 内存地址没有限制,因此只需在相应节点上正确处理指针字段的值,就可以在链表中插入元素或从链表中删除元素。 链表的内存要求很低,只要是可以存储以下数据元素的内存块就可以使用,所以不会出现碎片。 总之,大小可以动态调整,删除迅速,检索慢,数据元素占用的内存稍多,不需要整个内存块,不会碎片化。 数组和链表的选择通过以上分析,得出数组和链表对我们的影响最大的一点是数组的逐位置检索迅速,链表容易添加删除的数组是固定大小, 在查询方面,链表中的每个元素在任何时候都可以占用比数组和链表多一点的内存是很常见的,而耗时的是,在数据量少、内容基本固定的情况下,选择任何数据结构的影响都不大但是,如果数据量很大,则需要频繁插入和删除数据时需要选择链表,如果需要频繁检索某个位置的元素时需要选择数组。 数组和链表没有明显的优劣,根据使用场景进行不同的选择是使用这两种结构的最佳方法。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。