本篇文章为你整理了每日一考(每日一考答案)的详细内容,包含有每日一考app 每日一考答案 每日一考 活动方案 每日一考:葛洲坝水利枢纽工程何时建成? 每日一考,希望能帮助你了解 每日一考。
arraylist
基于数组,需要连续内存
随机访问快(指根据下标访问)
尾部插入、删除性能可以,其它部分插入、删除都会移动数据,因此性能会低
可以利用 cpu 缓存,局部性原理
linkedlist
基于双向链表,无需连续内存
随机访问慢(要沿着链表遍历)
头尾插入删除性能高
占用内存多
细说
由于arraylist底层是数组,所以元素必须连续存储,当要进行随机查找,其实是根据arraylist连续存储中的下标查找,这操作速度很快。
由于linkedlist底层是双向链表,所以存储是无序的,占用内存多(大约同样存储量,占用内存是arraylist的4倍左右),进行随机查找时,得一个一个查,所以访问效率低很多。
且arraylist底层实现了一个RandomAccess(随机访问接口),而linkedlist没有实现,实现这个接口就可以通过下标去找,没有实现就只有通过迭代器找
list集合去重都有哪些方法 3
(最佳)使用LinkedHashSet删除ArrayList中的重复元素
可以做到即删除了重复数据,又保持添加到其中的数据的顺序。
数组和链表分别适用于什么场景,为什么 3
数组:数组是将元素在内存中连续存储的;它的优点:因为数据是连续存储的,内存地址连续,所以在查找数据的时候效率比较高;它的缺点:在存储之前,我们需要申请一块连续的内存空间,并且在编译的时候就必须确定好它的空间的大小。在运行的时候空间的大小是无法随着你的需要进行增加和减少而改变的,当数据两比较大的时候,有可能会出现越界的情况,数据比较小的时候,又有可能会浪费掉内存空间。在改变数据个数时,增加、插入、删除数据效率比较低。
链表:链表是动态申请内存空间,不需要像数组需要提前申请好内存的大小,链表只需在用的时候申请就可以,根据需要来动态申请或者删除内存空间,对于数据增加和删除以及插入比数组灵活。还有就是链表中数据在内存中可以在任意的位置,通过应用来关联数据(就是通过存在元素的指针来联系)。
其实这两者最典型的实现就是arraylist和linkedlist
数组应用场景:数据比较少;经常做的运算是按序号访问数据元素;数组更容易实现,任何高级语言都支持;构建的线性表较稳定。
链表应用场景:对线性表的长度或者规模难以估计;频繁做插入删除操作;构建动态性比较强的线性表。
以上就是每日一考(每日一考答案)的详细内容,想要了解更多 每日一考的内容,请持续关注盛行IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。