2013-10-22 28 views
1
Map<obj, Integer> myMap = new Map<obj, Integer>; 

myObj1 = new obj(value = "a"); 
myObj2 = new obj(value = "b"); 
myObj3 = new obj(value = "a"); 

myMap.put(myObj1, 1); 
myMap.put(myObj2, 2); 
myMap.put(myObj3, 3); 

//myMap.size() returns a value of 2, but I want three distinct entries 

因此,我知道为什么会发生上述情况,我想知道的是如何最好地处理它。Salesforce Apex Map使用sObject(包含重复数据)作为键

我想创建一个使用sObject(我的应用程序中的自定义对象)键控的地图。问题是map key唯一性的测试是基于对象字段的值,而不是它在内存或其他Id中的位置。

我非常想避免保存记录和检索ID以用于唯一性。任何其他建议如何管理?

回答

1

如果两个对象返回相同的hashCode,则认为它们是相同的密钥。 建议在地图中使用不可变对象,例如字符串的键,就像以后更改sobjects时它可能会破坏地图一样。使用ID是任何其他独特的领域将会做的一个很好的选择。