采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
可能因为delNode需要新建对象的原因,所以后一种方法比前一种方法要慢一点,但是前一种方法我们需要删除的节点依然通过next连在了链表上,应该不会被回收的,这样会不会导致当基数很大的时候,大量的内存空间会被浪费?出于综合性能考虑,到底用哪一种比较好?
我个人倾向第二种方式,显示地进行删除。所以在课程中实现的我们自己的链表类,我使用的是第二种方式。
但是,第一种方式没有任何错误!prev.next = prev.next.next后,原来的prev.next节点不再可达,gc是可以回收这个节点的!当链表的生存周期结束以后,所有节点都可以被正确的回收,只是回收可能来的晚了一些。
这两种方式都是正确的方式。我个人写代码比较强调语意性,所以倾向第二种写法:)
谢谢老师。可能我对gc的回收机制有点误解,是不可达就满足回收机制了吗
是的:)
登录后可查看更多问答,登录/注册
动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…
11.3k 16
1.8k 17
1.7k 14
1.8k 14
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号