Salesforce Apex Map使用sObject(包含重复数据)作为Key

时间:2013-10-22 05:46:57

标签: map salesforce apex

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

所以,我知道为什么会发生这种情况,我想知道的是如何最好地处理它。

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

我非常希望避免保存记录并检索ID以用于唯一性。关于如何管理这个的任何其他建议?

1 个答案:

答案 0 :(得分:1)

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