比较器:等于方法功能

2022-02-24 00:00:00 compare java comparator

实际上,我正在阅读其中一个教程,其中提到当我们需要实现比较器接口时,可以重写equals方法(但是不必重写)。

为了更好地理解

我重写该方法,如下所示

Test.java

 import java.util.TreeSet;

public class Test
{
    public static void main(String[] args)
    {
        TreeSet t = new TreeSet(new MyComparator());
        t.add(1);
        t.add(1);
        t.add(2);
        System.out.println(t);
    }
}

MyCompator.java

导入java.util.Compator;

public class MyComparator
    implements Comparator
{
    @Override
    public int compare(Object o1, Object o2)
    {
        Integer i1 = (Integer) o1;
        Integer i2 = (Integer) o2;
        return i1.compareTo(i2);
    }

    @Override
    public boolean equals(Object o1)
    {
        return false;
    }
}

其他方案

import java.util.Comparator;

public class MyComparator
    implements Comparator
{
    @Override
    public int compare(Object o1, Object o2)
    {
        Integer i1 = (Integer) o1;
        Integer i2 = (Integer) o2;
        return i1.compareTo(i2);
    }

    @Override
    public boolean equals(Object o1)
    {
        return true;
    }
}
现在,无论我从equals方法返回什么,TRUE或FALSE。它返回相同的树集值。 如果有谁能澄清equals方法的函数性概念,请


解决方案

Comparator上实现equals()方法允许您指示一个比较器提供与另一个比较器相同的顺序。它与元素的排序方式无关。这是一项非常高级且极少需要的功能。您不太可能遇到实际调用比较器的equals()方法的情况。我建议你忽略它。

相关文章