12
votes
Accepted
hashCode() is never called when adding to Maps and Sets
It took 2 months, but this is the "final" answer we got from Support on this topic. Note that the investigation by Tier 3 resulted in this Known Issue being filed which was ultimately the cause for ...
6
votes
Why is record object with different id not used as key in Map?
The code is working absolutely fine. The issue here is the system debug which prints the map. It is printing only the first value. I modified your code to also print the size and individual elements ...
6
votes
Accepted
Unexpected results when using a custom class as key in Map
Aidan has already linked to the post that describes what I think is the likely cause: hashCode() is never called when adding to Maps and Sets.
Running with the debug level turned down would confirm.
...
5
votes
Accepted
HashCode Deduplication?
Does Apex also have 232 possible values?
(looks to me like the same max int)
Yes.
Can the hashCode values for the same object really change?
HashCode means different things ...
5
votes
Accepted
System.hashCode still broken for Id
Per Chris Peterson:
Known. Fixed in next release. Doesn't impact apex collection correctness since they use magic to use a "proper" hashCode value thankfully.
Obviously, #SafeHarbor, but ...
5
votes
Accepted
Prevent Duplicates using unique key
BUT can I rely on it ? Is there a possibility that 2 records with different keys would generate the same hash ?
Yes, there is. There must be, because you're compressing more than 256 bits of data ...
5
votes
How can I check if an sObject is contained by a Set after changing a field value?
This interesting Apex oddity came up when I was debugging a problem around hash code collisions.
Just by adding a System.debug statement that drops the contents of the Set it becomes possible to find ...
3
votes
System.hashCode broken on Id properties of SObjects?
Update: Fixed!
I just tested this in a Spring '21 sandbox and it is fixed! The Known Issue still says In Review but I assume that's because the release isn't in production instances yet.
Note that ...
3
votes
Accepted
SObject key of map mutated returns null but serializing returns the value
A map internally stores the data by hash codes, so it looks like this:
{ "12345" => [value1],
"23456" => [value2],
"34567" => [value3, value4]
}
When retrieving a value via get, it ...
2
votes
Accepted
hashCode and equals implementation not working
I believe your problem is the naming conflict in your constructor. When you use the pattern you have, your code simply reassigns the constructor parameter, rather than the object attribute. If they ...
2
votes
Salesforce why hashcode method is not working
You need the equals and hashCode implementations to be compatible, and in your implementation they are not. Both play a part in how a Map is managed. First the hashCode is used to identify the "...
2
votes
Salesforce why hashcode method is not working
You're factoring email into the hash code, which is different for each user. Therefore, you end up with set that has two items. hashCode() is called first, then equals is called afterwards if there's ...
2
votes
Implementing hashCode() with more than two variables
To comment on and extend the answer from @sfdcfox, I recommend against conversion to a string in order to hash, especially if your object will be used in a Set or Map in code that is executed often, ...
2
votes
Accepted
Implementing hashCode() with more than two variables
The hashCode() value isn't the only factor involved, it also checks equals(), but be aware of choosing a bad hash. It should probably be sufficient to say:
return (
firstName+' '+
lastName+' '+
...
2
votes
Methods equals() and hashCode() misbehaving in Map.containsKey()
I cannot explain your results, though see the comment I've added to the question.
My attempts at trying to use value equality between SObject instances (where all the fields are compared) have never ...
1
vote
How do i get parameter values in decrypted format where the URL parameters are in encrypted format
"Encrypted" is not a format. Data is encrypted using a specific algorithm, key, initialization vector, mode of operation, and so forth. These values are not interchangeable. You must know exactly how ...
1
vote
Hash Code Used In Map Keys
From a brief experiment of querying various numbers of fields (up to 281 of them anyway) for an SObject and assuming System.hashCode that works on:
The object to get the hash code for. This ...
1
vote
Accepted
Apex equivalent of PHP sha1() and some more encoding methods
This is how it would look like in APEX:
String md5 = EncodingUtil.base64Encode(Crypto.generateDigest('MD5', Blob.valueOf(String.valueOf(DateTime.now().getTime()))));
system.debug(md5);
String var1 = ...
Only top scored, non community-wiki answers of a minimum length are eligible
Related Tags
hashcode × 21apex × 16
map × 6
set × 4
crypto × 3
duplicate-management × 2
encodingutil × 2
marketing-cloud × 1
sobject × 1
php × 1
encryption × 1
bug × 1
base64 × 1
serialize × 1
url-encode × 1