File数组通过Comparator来进行排序时,equals方法不写会有影响吗?

获取路径下的File数组,File[] files = file.listFiles();
之前查询过更具日期排序做法如下:

    Arrays.sort(files, new Comparator<File>() {
        @Override
        public int compare(File file1, File file2) {
            long diff = file1.lastModified() - file2.lastModified();
            if (diff > NUM_ZERO)
                return -NUM_ONE;
            else if (diff == NUM_ZERO)
                return NUM_ZERO;
            else
                return NUM_ONE;
        }
        /**
        *问题:以下代码存在的必要性??
        **/
        public boolean equals(Object obj) {
            return true;
        }
    });

这里为什么要写equals?而且也没有要求强制重写。因为项目代码要通过sonar规范,这里说如果写了equals方法还需要重写hashcode(正常我明白要这样做,但是这里似乎并没有用上这个方法?)
希望高手可以给个解答。。谢谢。

阅读 2.6k
2 个回答

equals方法不写会有影响吗?取决于是否要用到对象的equals方法,该方法是Object的方法,源码就是使用==比较是否是堆中的同一个对象,例如使用HashMap把一个普通类作为Key保存,如果没有重写hashcode和equals方法会导致无法正常存取。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题