使用 hashCode() 在 java 中对对象进行排序,而不是在 HashTable 等中排序



我需要你的帮助。如果我想在java中对PriorityQeueu进行排序,而不连接到它的属性 - 我可以使用hashCode的对象进行比较吗?

我是这样做到的:

comp = new Comparator<Person>() {
        @Override
        public int compare(Person p1, Person p2) {
            if(p1.hashCode() < p2.hashCode()) return 1;
            if(p1.hashCode() == p2.hashCode()) return 0;
            return -1;
        }
    };
collector = new PriorityQueue<Person>(comp);

这听起来不是一个好方法。默认 hashCode() 通常通过将对象的内部地址转换为整数来实现。因此,对象在应用程序执行之间会有所不同。此外,具有相同属性值集的 2 个对象将不会返回相同的 hashCode 值,除非您覆盖实现。这实际上打破了可比性的预期合同。

相关内容

  • 没有找到相关文章