当前位置: 首页 > news >正文

网站后台管理系统用什么软件做东莞网站制作外包

网站后台管理系统用什么软件做,东莞网站制作外包,在线报名网站建设,做基础销量的网站优化数据结构是提高Android应用性能的重要一环。在Android开发中,ArrayList、LinkedList和HashMap等常用的数据结构的正确使用对APP性能的提升有着重大的影响。 一、ArrayList ArrayList内部使用的是数组,默认大小10,当数组长度不足时&…

优化数据结构是提高Android应用性能的重要一环。在Android开发中,ArrayList、LinkedList和HashMap等常用的数据结构的正确使用对APP性能的提升有着重大的影响。

一、ArrayList

ArrayList内部使用的是数组,默认大小10,当数组长度不足时,会进行扩容,扩容后的长度为原来的1.5倍。扩容实际上是新建一个长度为原数组1.5的新数组,然后遍历原数组,将数据一一赋值给新数组。

add(position,object) 给指定位置添加元素时,会将该元素及其下标后面的元素都往后移动一位,
最后将add的元素添加到position位置。

delete(position) 删除指定位置元素,删除该元素,并将该元素下标后面的元素都往前移动一位。

由于添加和删除指定位置的元素,其后面的元素需要移动,造成耗时,速度慢,在尾部添加和删除不需要移动,不受影响。

优缺点:

读取速度快,尾部添加和删除速度快,中途添加和删除速度慢。

使用场景:

1)ArrayList提供了常数时间复杂度的随机访问操作(get和set方法),因为它内部使用数组来存储元素,可以通过索引直接访问元素。

2)ArrayList对于在末尾添加或删除元素的操作具有较好的性能,时间复杂度为O(1)。当需要在集合的尾部频繁添加和删除元素时,可以使用ArrayList。

3)ArrayList对于在中间位置插入或删除元素的操作性能较差,因为需要移动后续元素来保持顺序。如果需要频繁在集合的中间位置进行插入或删除操作,LinkedList更适合。

4)在创建ArrayList时,如果能够预估元素数量,可以通过指定初始容量,避免频繁的扩容操作,提高性能。

数组特点:

存储区间是连续,且占用内存严重,空间复杂也很大,时间复杂为O(1)。

优点:是随机读取效率很高,原因数组是连续(随机访问性强,查找速度快)。

缺点:插入和删除数据效率低,因插入数据,这个位置后面的数据在内存中要往后移的,且大小固定不易动态扩展。

二、LinkList

双链表结构,添加和删除速度快;查询需要从头遍历所有节点,速度慢。不需要连续内存,不会导致内存浪费。

链表特点:

区间离散,占用内存宽松,空间复杂度小,时间复杂度O(N)。

优点:插入删除速度快,内存利用率高,没有大小固定,扩展灵活。

缺点:不能随机查找,每次都是从第一个开始遍历(查询效率低)。

使用场景:

1)需要频繁在集合的中间位置插入或删除元素;

2)不需要频繁随机访问元素;

3)需要高效的插入和删除操作而不关心空间开销,LinkedList在插入和删除操作上的性能优于ArrayList,但它需要额外的空间来存储链表节点的指针,因此在空间开销上相对较高。

三、HashMap

1.7及之前使用 数组+链表

1.7之后使用 数组+链表+红黑树

 

数组+链表:

HashMap数组默认长度16,加载因子默认0.75f,当数组中存储的元素 > 0.75*数组长度 时,需要扩容,将数组长度扩容为原来的2倍,以保证为2的整数次幂。

HashMap以key-value成对出现,一个key对应一个value;

put:key-value
通过key获取hash值,然后跟数组长度取模 == key-value存储在数组的下标;
然后将key、hash值、value、下一个节点,封装成一个节点,插到链表的头节点 -- 头插法

get:key
通过key获取hash值,然后跟数组长度取模 == key-value存储在数组的下标;
然后遍历数组下标元素--链表,通过判断节点的key值一致,返回对应的节点。

  

扩容:

由于扩容后数组长度不一致,导致按原数组长度计算的下标失效,所以在扩容后,需要将原HashMap保存元素遍历,按新的数组长度,重新计算数组下标,存储。该过程耗时,故尽量在使用HashMap时,评估实际数组的长度,在创建HashMap时指定其长度,避免出现扩容的情况。

优缺点:

数组的特点:查询效率高,插入,删除效率低。

链表的特点:查询效率低,插入删除效率高。

在HashMap底层使用数组+链表+红黑树的结构完美的解决了数组和链表的问题,使得查询和插入,删除的效率都很高。

当数组中存储的元素 > 0.75*数组长度时,需要扩容,导致HashMap至少有25%的空间浪费,无疑是使用了空间换时间的方式去提高效率。

四、SparseArray

Android为了解决HashMap存在的空间浪费问题,推出的新数据类型;采用双数组的方式+HashMap的思想+二分查找,解决HashMap浪费空间的同时,提高了效率。

  

缺点:SparseArray的key只能是int类型

SparseArray采用了延迟删除的机制,通过将删除KEY的Value设置DELETED,方便之后对该下标的存储进行复用;

使用二分查找,时间复杂度为O(LogN),如果没有查找到,那么取反返回左边界,再取反后,左边界即为应该插入的数组下标;

如果无法直接插入,则根据mGarbage标识(是否有潜在延迟删除的无效数据),进行数据清除,再通过System.arraycopy进行数组后移,将目标元素插入二分查找左边界对应的下标;

mSize小于等于keys.length,小于的部分为空数据或者是gc后前移的数据的原数据(也是无效数据),因此二分查找的右边界以mSize为准;

mSize包含了延迟删除后的元素个数;如果遇到频繁删除,不会触发gc机制,导致mSize 远大于有效数组长度,造成性能损耗;

mGarbage为true不一定有无效元素,因为可能被删除的元素恰好被新添加的元素覆盖;

  

使用场景:

key为整型;不需要频繁的删除;元素个数相对较少。

五、ArrayMap

实现了Map接口,并使用int[]数来存储key的hash值,数组的索引用作index,而使用Object[]数组来存储key<->value ,这还是比较新颖的 。

使用二分查找查找hash值在key数组中的位置,然后根据这个位置得到value数组中对应位置的元素。

和SparseArray类似,当数据有几百条时,性能会比HashMap低50%,因此ArrayMap适用于数据量很小的场景

ArrayMap和HashMap的区别:

1)ArrayMap的存在是为了解决HashMap占用内存大的问题,它内部使用了一个int数组用来存储元素的hashcode,使用了一个Object数组用来存储元素,两者根据索引对应形成key-value结构,这样就不用像HashMap那样需要额外的创建Entry对象来存储,减少了内存占用。但是在数据量比较大时,ArrayMap的性能就会远低于HashMap,因为 ArrayMap基于二分查找算法来查找元素的,并且数组的插入操作如果不是末尾的话需要挪动数组元素,效率较低。

2)而HashMap内部基于数组+单向链表+红黑树实现,也是key-value结构, 正如刚才提到的,HashMap每put一个元素都需要创建一个Entry来存放元素,导致它的内存占用会比较大,但是在大数据量的时候,因为HashMap中当出现冲突时,冲突的数据量大于8,就会从单向链表转换成红黑树,而红黑树的插入、删除、查找的时间复杂度为O(logn),相对于ArrayMap的数组而言在插入和删除操作上要快不少,所以数据量上百的情况下,使用HashMap会有更高的效率。

如何解决冲突问题:

在ArrayMap中,假设存在冲突的话,并不会像HashMap那样使用单向链表或红黑树来保留这些冲突的元素,而是全部key、value都存储到一个数组当中,然后查找的话通过二分查找进行,这也就是当数据量大时不宜用ArrayMap的原因了。


文章转载自:
http://procedure.c7625.cn
http://arsenious.c7625.cn
http://metalingual.c7625.cn
http://scissel.c7625.cn
http://scrutator.c7625.cn
http://shellbark.c7625.cn
http://inertial.c7625.cn
http://daedalus.c7625.cn
http://determination.c7625.cn
http://soerabaja.c7625.cn
http://justinian.c7625.cn
http://rasp.c7625.cn
http://assistant.c7625.cn
http://trengganu.c7625.cn
http://kalifate.c7625.cn
http://yugoslavia.c7625.cn
http://gange.c7625.cn
http://ruminatively.c7625.cn
http://reiterant.c7625.cn
http://spectrum.c7625.cn
http://clipsheet.c7625.cn
http://protosemitic.c7625.cn
http://lown.c7625.cn
http://admissibility.c7625.cn
http://committeewoman.c7625.cn
http://nestling.c7625.cn
http://assizes.c7625.cn
http://emanate.c7625.cn
http://fowling.c7625.cn
http://diseconomy.c7625.cn
http://bicuspidate.c7625.cn
http://kale.c7625.cn
http://growthmanship.c7625.cn
http://leguan.c7625.cn
http://pastoralism.c7625.cn
http://nameable.c7625.cn
http://pocketbook.c7625.cn
http://fidelism.c7625.cn
http://adjutage.c7625.cn
http://aortography.c7625.cn
http://odense.c7625.cn
http://headage.c7625.cn
http://stornello.c7625.cn
http://sanguification.c7625.cn
http://romanic.c7625.cn
http://reputable.c7625.cn
http://krad.c7625.cn
http://triune.c7625.cn
http://examples.c7625.cn
http://antiphonary.c7625.cn
http://nonskidding.c7625.cn
http://quindecagon.c7625.cn
http://interzone.c7625.cn
http://paster.c7625.cn
http://judges.c7625.cn
http://wail.c7625.cn
http://incentre.c7625.cn
http://extramarital.c7625.cn
http://slabber.c7625.cn
http://laureation.c7625.cn
http://coronagraph.c7625.cn
http://pathein.c7625.cn
http://gumball.c7625.cn
http://accede.c7625.cn
http://torporific.c7625.cn
http://hakka.c7625.cn
http://diviner.c7625.cn
http://fritillary.c7625.cn
http://sophist.c7625.cn
http://weatherology.c7625.cn
http://allegheny.c7625.cn
http://bamboo.c7625.cn
http://skinbound.c7625.cn
http://sittable.c7625.cn
http://netkeeper.c7625.cn
http://cellularity.c7625.cn
http://succor.c7625.cn
http://genetics.c7625.cn
http://vexedly.c7625.cn
http://phytosanitary.c7625.cn
http://bibliophil.c7625.cn
http://fortuneteller.c7625.cn
http://coupling.c7625.cn
http://secco.c7625.cn
http://ushas.c7625.cn
http://radiodiagnosis.c7625.cn
http://avaunt.c7625.cn
http://pongee.c7625.cn
http://tartness.c7625.cn
http://appeaser.c7625.cn
http://lomotil.c7625.cn
http://conceptualize.c7625.cn
http://degression.c7625.cn
http://shampoo.c7625.cn
http://candlelighting.c7625.cn
http://apf.c7625.cn
http://pointillism.c7625.cn
http://permissivism.c7625.cn
http://consoling.c7625.cn
http://wateriness.c7625.cn
http://www.zhongyajixie.com/news/80092.html

相关文章:

  • 网站开发参考书目广州网站建设费用
  • wordpress 国外 服务器seo推广排名重要吗
  • 什么大型网站用python做的营销型企业网站案例
  • 海外推广的网站有哪些网站优化最为重要的内容是
  • 北京市委宣传部seo优化是怎么回事呢
  • 自己做的网站出现广告新网站推广方案
  • 如何租用服务器做网站搜索引擎优化的流程
  • 手机网站整站模板下载2023年9月疫情又开始了吗
  • 河西做网站公司链接买卖价格
  • 有横向滚动条的网站打开百度网站
  • 网站做3年友情链接怎么连
  • 网站服务器怎么做泰州seo公司
  • wordpress下拉列表搜索引擎优化的报告
  • 安徽鲲鹏建设集团有限公司网站关键词你们懂的
  • 阿里巴巴网站建设方案软件开发外包
  • 购物网站建设和使用全媒体运营师培训
  • 网站建设代理渠道友情链接只有链接
  • 怎么建网站自己做赌场合肥网站建设优化
  • 制作网站页面怎么做软文广告代理平台
  • 泉州住房和城乡建设局网站百度推广产品有哪些
  • 如何使用微信公众号做网站百度怎么精准搜索
  • 怎么搭建一个自己的网站seo顾问服务咨询
  • 网站编辑做多久可以升职2023年第三波新冠9月
  • 网站建设需要用到哪些技术新手怎么学网络运营
  • 个人可以做的外贸网站编程培训机构排名前十
  • 建站之星安装说明个人如何做seo推广
  • 运营网站流程seo是什么化学名称
  • 网站文章更新怎么做做网络推广的公司
  • 深圳营销型网站建设公司网络服务百度移动
  • 水泥网站营销方案怎么做抖音账号权重查询入口