簡體   English   中英

通過 == 運算符從 hashmap 中獲取元素,而不是在 java 中獲取元素。

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

我有一個 hashmap,我想通過引用找到一個密鑰。 我發現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()。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM