自定义比较器报错

发现一个特别奇葩的问题,在自己电脑上写的程序的使用MapReduce对数据进行清理,但是被同事拷贝了一份之后,在同事电脑上跑程序,就报错

使用的jdk版本是1.8的

java.lang.IllegalArgumentException: Comparison method violates its general contract!
    at java.util.TimSort.mergeHi(TimSort.java:899)
    at java.util.TimSort.mergeAt(TimSort.java:516)
    at java.util.TimSort.mergeForceCollapse(TimSort.java:457)
    at java.util.TimSort.sort(TimSort.java:254)
    at java.util.Arrays.sort(Arrays.java:1512)
    at java.util.ArrayList.sort(ArrayList.java:1454)
    at java.util.Collections.sort(Collections.java:175)
    at com.byhq.mapreduce.clikStream.pageViewReduce.reduce(pageViewReduce.java:42)
    at com.byhq.mapreduce.clikStream.pageViewReduce.reduce(pageViewReduce.java:16)
    at org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:164)
    at org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:610)
    at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:444)
    at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:449)

在网上查了很多帖子都是关于jdk版本的问题,然而使用其解决方式无济于事,自己查看错误的    at java.util.TimSort.mergeHi(TimSort.java:899)源码就会发现还是自己定义比较器的时候考虑不周到

原来的比较器定义比较条件的代码

  d1.getTime() >d2.getTime() ? 1 :-1

修改之后的比较器定义比较条件的代码

 d1.getTime()==d2.getTime() ? 0 :(d1.getTime() >d2.getTime() ? 1 :-1)

相比之下考虑的因素更加全面,问题解决,希望大家对大家有用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编辑器 KindEditor 4.0.4 KindEditor 是一套开源的在线HTML编辑器,主要用于让用户在网站上获得所见即所得编辑效果,开发人员可以用 KindEditor 把传统的多行文本输入框(textarea)替换为可视化的富文本输入框。 KindEditor 使用 JavaScript 编写,可以无缝地与 Java、.NET、PHP、ASP 等程序集成,比较适合在 CMS、商城、论坛、博客、Wiki、电子邮件等互联网应用上使用 主要特点 快速:体积小,加载速度快 开源:开放源代码,高水平,高品质 底层:内置自定义 DOM 类库,精确操作 DOM 扩展:基于插件的设计,所有功能都是插件,可根据需求增减功能 风格:修改编辑器风格非常容易,只需修改一个 CSS 文件 兼容:支持大部分主流浏览器,比如 IE、Firefox、Safari、Chrome、Opera ver 4.0.4 (2011-12-11) 新增: 阿拉伯语语言包。 改善: 上传文件时显示上传中提示。 改善: JSON解析失败时,通过弹出层显示服务器返回的HTML页面。 改善: [IE] 弹出框支持阴影效果。 Bugfix: 浏览器使用有些插件时,上传文件提示不正确。 Bugfix: 单独调用图片功能时,点击重置大小图标报错。 Bugfix: 设置了参数filterMode:true,分页符就会丢失样式。 Bugfix: [FF] 撤销全屏后页面会滚动到顶部。 Bugfix: [ASP] demo.asp没有指定编码,导致提交后HTML出现乱码。 Bugfix: 单独调用上传按钮时,无法与旁边输入框对齐。 Bugfix: [WEBKIT] 在图片、视频、flash等前一个光标处右键,在不选中节点的状态下也能弹出修改属性。 Bugfix: [IE] 编辑器无内容,加粗,切换到代码模式,再回到可视化模式,加粗,JS报错。 Bugfix: [IE] 插入<input value=”abc"def”/>,会自动变为 <input value=”abc”def”/>。 Bugfix: [WEBKIT] 点击粗体后丢失光标。 Bugfix: [OPERA] 切换到代码模式后不显示部分工具栏图标。 Bugfix: del标签被定义在块级元素里,导致格式化HTML时自动换行。 Bugfix: 开启过滤模式,获取HTML时删除线被过滤。 Bugfix: [IE] 两张相邻图片添加超级链接,修改其中一个链接,另外一个链接也会被修改。 Bugfix: 内嵌脚本的小于号会被转义导致脚本错误。 Bugfix: 分页符在不同浏览器下生成的HTML代码不一致。 Bugfix: [IE6-7] 插入URL里有大写字符的图片,右键点击选择图片属性,更改图片属性后图片不能显示

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值