今天在网上冲浪,看到链接列表的作者写的自己不使用链接列表的文章,感到惊讶,有点意思。
这可能就是大人物。 制造车轮,但我不用! 还是传说中的厨师不吃自己做的菜呢?
别说了,言归正传。 其实我个人觉得大人物说的好像是事实。 因为在业务上似乎不能使用链接列表,所以大多数情况下使用ArrayList比较合适。 我仔细数了一下自己平时的使用情况,真的是ArrayList。
说这个,可能有人不同意,但我说我看过面试问题,LinkedList有那个优势!
这个问题我也看过,如果没错的话,我们谈谈ArrayList和链接列表的区别吧?
这个问题可以说是“八股文前三”,其实这个问题映射的是数组和链表的比较。
如果你在网上看到过这个问题,你看到的答案一定如下。
数组的随机访问快,插入和删除慢
链表的插入删除快,随机访问慢
频繁增删的情况下,用链表比较合适
在随机查找多的情况下,用数组比较合适
问题是链表的频繁添加和删除。 如果只增加调查这三种方法的时间复杂性来看,确实如此。 没错。
但是,在平时的使用中,这种说法完全不成立! 想想看。 要从链表中删除元素,必须先找到它啊。 搜索这个链表需要时间啊。
所以,在实际使用时,如果有频繁的添加删除,就不应该使用链表。
你不相信吗? 做个实验吧。
publicclassyesarraylinkedbattle { privatestaticfinalintcount=100000; staticlistintegerfillist (listintegerlist ) for ) inti=0; iCOUNT; I ) ) list.add ) I; 填满列表,假装我们在数据库中得到这么多数据}返回列表; } staticvoidrandomadd (listintegerlist,StringlistType ) long t1=system.current time millis ); for(inti=0; iCOUNT; I ) (list.add ) threadlocalrandom.current ) ).nextint(0,COUNT ),I ); } long T2=system.current time millis (; system.out.println (在listtype '随机位置插入' COUNT '次需要时间() ) ()-T1 ); } publicstaticvoidmain (字符串[ ] args ) randomadd (文件列表) new ArrayList (计数)、'数组'); 随机添加(文件列表新建链接列表)、'链表'); }这个实验虽然粗暴简单,但也很直观。 对填充了数据的ArrayList和LinkedList分别执行10万次随机插入操作,每一次汇总都需要时间。
执行结果如下。
是吧。 随机插入时,链表不占优势,明显弱于数组。
因此,对于链表的插入操作,不仅要关注其插入的时间复杂度,还必须加入找到前一节点的开销,所以在频繁追加删除的情况下不能一概而论使用链表是合适的
当然,如果数据量很少,实际上两者都一样。 例如,长度为100,运行100次后,时间如下:
长度均为1000,执行1000次后,时间如下。
因此,在数据量少、操作次数少的情况下,实际上不需要太烦恼使用哪个。 但是,如果数据量大,对延迟敏感,建议做好测试。 你不能根据网上的结论下结论。
技术交流群
最近,有很多人想知道是否有读者交流群,如何参加。
我最近组成了几个小组。 大家都可以参加。 交流群是免费的,大家参加后不要随便发广告,多交流技术就可以了。
目前已组建多个交流群、全国交流群、北上广杭深等各地区交流群、面试交流群、资源共享群等。
有兴趣加入小组的学生见下面的二维码,http://www.Sina.com/http://www.Sina.com/http://www.Sina.com /
长按扫描
过去的推荐
我被炒了。 因为我看到了骂公司的帖子
阿里P9年薪与家庭资产
我的新书终于写完了。
如果你喜欢正文
长按二维码,选择http://www.Sina.com/http://www.Sina.com /
转发到朋友圈对我来说是最大的支持。
一定要备注:全国
喜欢是一种感觉
看的是一种支持