通过 == 运算符从哈希图中获取元素,而不是 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!
正如我所说,我需要 alreadyExists
为 false
。
我是 java 的新手,但在 C# 中你可以很容易地用类似的东西做这样的事情:
var alreadyExists = myMap.containsKey(a => a == animals);
有什么方法可以在Java中做这样的事情吗不想想覆盖equal()
方法!
Java 有一个名为 IdentityHashMap 的 class,它完全符合您的要求 - 它比较引用而不是使用 equals()。
我有一个哈希图,我想通过引用找到一个键。我发现 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!
正如我所说,我需要 alreadyExists
为 false
。
我是 java 的新手,但在 C# 中你可以很容易地用类似的东西做这样的事情:
var alreadyExists = myMap.containsKey(a => a == animals);
有什么方法可以在Java中做这样的事情吗不想想覆盖equal()
方法!
Java 有一个名为 IdentityHashMap 的 class,它完全符合您的要求 - 它比较引用而不是使用 equals()。