作者:妖姬脸似花甘露_545 | 来源:互联网 | 2023-01-27 16:25
其实我经历在其中提到,当我们需要实现比较接口,我们可以覆盖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);
}
}
MyComparator.java
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 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 ..它返回相同的treeset值.如果有人能够清除equals方法的功能性概念请
1> Mike Nakis..:
equals()
在a上实现该方法Comparator
允许您指示一个比较器提供与另一个比较器相同的顺序.它与元素的排序方式无关.它是一种非常先进且极少需要的功能.您极不可能遇到equals()
实际调用比较器方法的情况.我建议你忽略它.