首页 > 编程知识 正文

linkedlist排序,linkedlist可以重复吗

时间:2023-05-06 18:54:28 阅读:44352 作者:2459

今天在网上冲浪,看到链接列表的作者写的自己不使用链接列表的文章,感到惊讶,有点意思。

这可能就是大人物。 制造车轮,但我不用! 还是传说中的厨师不吃自己做的菜呢?

别说了,言归正传。 其实我个人觉得大人物说的好像是事实。 因为在业务上似乎不能使用链接列表,所以大多数情况下使用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 /

转发到朋友圈对我来说是最大的支持。

一定要备注:全国

喜欢是一种感觉

看的是一种支持

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