首页javasetJava Collection - 如何创建java.util.Set实现而不使用element.hashCode()

Java Collection - 如何创建java.util.Set实现而不使用element.hashCode()

我们想知道如何创建java.util.Set实现而不使用element.hashCode()。
import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;

class MyObject {

  final int value;

  public MyObject(int val) {
    this.value = val;
  }

  @Override
  public int hashCode() {
    throw new IllegalStateException("This method must not be called");
  }
}

public class Main {
  public static void main(String[] args) {
    Set<MyObject> set = new TreeSet<>(new Comparator<MyObject>() {
      @Override
      public int compare(MyObject left, MyObject right) {
        return left.value - right.value;
      }
    });
    set.add(new MyObject(1));
    set.add(new MyObject(2));
    set.add(new MyObject(3));
    set.add(new MyObject(1)); // '1' is already in set
    System.out.println("size:"+set.size());// print 3
    System.out.println(set.remove(new MyObject(3)));
    System.out.println("size:"+set.size()); 
  }
}