Reputation: 35
What could the problem be? I expect different value of s1.hashCode ad s2.hashCode, but they are the same.
dart --version // Dart VM version: 1.21.1 (Fri Jan 13 09:44:01 2017) on "linux_x64"
main() {
String s1 = "x-14-9";
String s2 = "f-107";
print(s1.hashCode); // 939886624
print(s2.hashCode); // 939886624
print("identical - ${identical(s1,s2)}"); // identical - false
print("== - ${s1 == s2}"); // == - false
}
When I try this code in DartPad - everything is going well, values different.
Upvotes: 1
Views: 790
Reputation: 8624
In many real programs, perfect hash functions do not exist.
That means that different objects may potentially collide (i.e. have the same hashCode
, in Dart). Most implementations of things like a HashMap
fall back on using an equality check on collisions.
You don't have to worry about this when using the standard library:
var map = new Map<String, int>();
map['x-14-9'] = 1;
map['f-107'] = 2;
print(map); // Should print both key-value pairs.
Upvotes: 2