映射条目的哈希码值
Hashcode value for Map Entry
根据 javadocs 哈希码,map.entry 定义为:
int hashCode()
Returns the hash code value for this map entry. The hash code of a map entry e is defined to be:
(e.getKey()==null ? 0 : e.getKey().hashCode()) ^
(e.getValue()==null ? 0 : e.getValue().hashCode())
请确认,是否使用按位异或运算符计算映射条目的哈希码值?
是的,hashCode() for Map.Entry returns键和值的哈希码的按位异或。
不正确的解释 - 保留上下文以便下面的评论有意义
This ensures that two instances of a Map.Entry object which have the same hashCode() value are guaranteed to have equal Key and Value properties. (Assuming the hashCode() method is properly overridden in both the Types used as Key and Value)
这里是取自 Map.Entry
的实际代码,如 HashMap
实现中定义的那样。 ^
运算符是 Java.
的异或运算符
public final int hashCode() {
return Objects.hashCode(key) ^ Objects.hashCode(value);
}
但是,只要满足hashCode
的合同,计算方法或具体结果对用户无关紧要。
是的,^
表示 'XOR'。 Here is a list of all operators.
这看起来确实像是网络搜索比询问 SO 问题更快找到的东西。
是的,它确实是一个按位异或运算符。我尝试并通过使用 ^ 运算符获得了 hashcode() 方法和相同的结果。
import java.util.*;
class TreeMapExample {
public static void main(String args[]) {
// Creating TreeMap object
TreeMap<String, Integer> tm = new TreeMap<String, Integer>();
// Adding elements to the Map
tm.put("Chaitanya", 27);
tm.put("Raghu", 35);
tm.put("Rajeev", 37);
tm.put("Syed", 28);
tm.put("Hugo", 32);
// Getting a set of the entries
Set set = tm.entrySet();
// Get an iterator
Iterator it = set.iterator();
// Display elements
int hash;
while(it.hasNext()) {
Map.Entry me = (Map.Entry)it.next();
System.out.println("Key: "+me.getKey() + " & Value: "+me.getValue());
System.out.println("hashcode value by method : "+me.hashCode());
hash = me.getKey().hashCode() ^ me.getValue().hashCode();
System.out.println("hashcode value by operator : "+me.hashCode()+"\n");
}
}
}
根据 javadocs 哈希码,map.entry 定义为:
int hashCode()
Returns the hash code value for this map entry. The hash code of a map entry e is defined to be:
(e.getKey()==null ? 0 : e.getKey().hashCode()) ^
(e.getValue()==null ? 0 : e.getValue().hashCode())
请确认,是否使用按位异或运算符计算映射条目的哈希码值?
是的,hashCode() for Map.Entry returns键和值的哈希码的按位异或。
不正确的解释 - 保留上下文以便下面的评论有意义
This ensures that two instances of a Map.Entry object which have the same hashCode() value are guaranteed to have equal Key and Value properties. (Assuming the hashCode() method is properly overridden in both the Types used as Key and Value)
这里是取自 Map.Entry
的实际代码,如 HashMap
实现中定义的那样。 ^
运算符是 Java.
public final int hashCode() {
return Objects.hashCode(key) ^ Objects.hashCode(value);
}
但是,只要满足hashCode
的合同,计算方法或具体结果对用户无关紧要。
是的,^
表示 'XOR'。 Here is a list of all operators.
这看起来确实像是网络搜索比询问 SO 问题更快找到的东西。
是的,它确实是一个按位异或运算符。我尝试并通过使用 ^ 运算符获得了 hashcode() 方法和相同的结果。
import java.util.*;
class TreeMapExample {
public static void main(String args[]) {
// Creating TreeMap object
TreeMap<String, Integer> tm = new TreeMap<String, Integer>();
// Adding elements to the Map
tm.put("Chaitanya", 27);
tm.put("Raghu", 35);
tm.put("Rajeev", 37);
tm.put("Syed", 28);
tm.put("Hugo", 32);
// Getting a set of the entries
Set set = tm.entrySet();
// Get an iterator
Iterator it = set.iterator();
// Display elements
int hash;
while(it.hasNext()) {
Map.Entry me = (Map.Entry)it.next();
System.out.println("Key: "+me.getKey() + " & Value: "+me.getValue());
System.out.println("hashcode value by method : "+me.hashCode());
hash = me.getKey().hashCode() ^ me.getValue().hashCode();
System.out.println("hashcode value by operator : "+me.hashCode()+"\n");
}
}
}