通过 == 运算符从哈希图中获取元素,而不是 java 中的 .equal

Get an element from a hashmap by == operator, rather than .equal in java

我有一个哈希图,我想通过引用找到一个键。我发现 get(key) 方法使用 .equal() 来查找密钥。但是我需要它来使用 == 通过引用找到它。 例如在下面的代码中:

HashMap<List, String> myMap = new HashMap<List, String>();
List<String> pets = new ArrayList<>();
pets.add("cat");
pets.add("dog");
    
myMap.put(pets, "pets");
    
List<String> animals = new ArrayList<>();
animals.add("cat");
animals.add("dog");
    
var alreadyExists = myMap.containsKey(animals); //I want this to return false
if(!alreadyExists) {
    myMap.put(animals, "pets");
}
    
System.out.println(myMap.size());  //and therefore, I want this to print 2!

正如我所说,我需要 alreadyExistsfalse

我是 java 的新手,但在 C# 中你可以很容易地用类似的东西做这样的事情:

var alreadyExists = myMap.containsKey(a => a == animals);

有什么方法可以在Java中做这样的事情吗不想想覆盖equal()方法!

Java 有一个名为 IdentityHashMap 的 class,它完全符合您的要求 - 它比较引用而不是使用 equals()。