首页 新闻 会员 周边

Arrays.sort对Object类型数组进行排序 数组不满的情况下会报NPE异常

0
悬赏园豆:5 [已解决问题] 解决于 2018-12-07 14:17

请问有什么办法能排一下?用泛型做一个优先队列,直接存的数字,最大的数优先出列,逻辑是每次添加后排序一次,然后出列出最后一个

不爱吃蘑菇的大蘑菇的主页 不爱吃蘑菇的大蘑菇 | 初学一级 | 园豆:83
提问于:2018-12-07 09:57
< >
分享
最佳答案
0

我觉得用链表比较合适啊,按照顺序连起来,来了新的数字也不用重新排序,只要找到合适的位置插进去就行了

收获园豆:5
会长 | 专家六级 |园豆:12401 | 2018-12-07 11:56

是 主要是想省省事 用数组 有可用的工具类 排序还是要排序的 找合适的位置插进去 不就和排序差不多嘛

不爱吃蘑菇的大蘑菇 | 园豆:83 (初学一级) | 2018-12-07 11:58

这才发现引用类型 数组不满 sort会报异常

不爱吃蘑菇的大蘑菇 | 园豆:83 (初学一级) | 2018-12-07 11:59

@不爱吃蘑菇的大蘑菇: 差太多了,把数组重新排一遍序的复杂度比往链表里插一个值大多了。即使是往数组里放也不用每次插入数据都重新排序吧。新建一个数组,把小于新数的部分拷过去,再加上新数,再把大于新数的数据拷过去,也不用重新排序啊。无论是从时间还是空间上看,链表都比数组好。

还得看你们的数据量吧,如果数据量小也就无所谓了,如果数据量大就得考虑复杂度。你说的问题可以这样解决,每次有新来数时把所有的数移动到一个新的数组里,这个数组的长度比老的数组大1.

会长 | 园豆:12401 (专家六级) | 2018-12-07 12:05

@会长: 没有想到拷贝数组这个方法,谢谢。主要是这个是自己做着玩的才用数组,要工作用稍微多一点就用链表

不爱吃蘑菇的大蘑菇 | 园豆:83 (初学一级) | 2018-12-07 14:17

@会长: 还是用链表吧 每次添加都新建一个数组 再比较 拷贝 工作量也不小

不爱吃蘑菇的大蘑菇 | 园豆:83 (初学一级) | 2018-12-07 14:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册