【发布时间】:2012-07-13 21:15:23
【问题描述】:
大家好
我有一个关于 Apex 地图的小问题。我有一张地图map <String, list <Account>>。我正在尝试执行以下操作 -
需要做什么:我将一个键传递给字符串变量,然后将该字符串传递给 Map.get() 方法以获取该键的值。在这里,它没有给我正确的答案。即使我使用 System.Debug() 打印出地图,它也会以非常不同的方式打印出地图!
String Id = 'Some Id that is the key in the map';
List <Account> testList = Map.get(Id);
这并没有给我对应的值,我也不知道为什么!
但是
当我输入下面的代码时,值会完美打印出来。
for(String s : Map.keySet()){
List <Account> TestList = Map.get(s);
System.Debug('TestList' + TestList);
}
测试列表实际上打印出它应该打印出的内容,即对于每个键,它打印出值,而当我打印地图时它没有按预期打印出。
预期结果:我想将密钥传递给 Map.get() 方法以检索结果,但在我的情况下显然没有发生。
非常感谢任何形式的帮助!
【问题讨论】:
-
在第一段代码中,您的 Map.get(Id) 是返回任何内容还是返回 null?
-
@SMGoodyear 它只是返回空值。
-
好酷。我注意到您在某些地方将密钥称为 Id 您是在密钥集中使用 Salesforce Id 还是另一种形式的 Id?我只是问,因为我想知道它是否是 SF id,并且您将它们存储为字符串,您可能在 id 的 15 对 18 字符表示方面遇到问题。顺便说一句,这完全是在黑暗中刺伤。如果不是这种情况,那么我们将不得不提出另一种可能性 - 但总是最好先把明显的那些排除在外。
-
map 的另一个常见问题(我确实犯了这个错误)是 get 方法区分大小写。
-
拥有失败的真正完整代码会很有帮助。 get() 方法中没有任何错误会导致这种情况;该错误很可能是您传递给 get() 的内容与密钥集中存储的内容不完全相同。因此,向我们展示地图是如何填充的,以及您传入的实际 ID 和地图的实际键,将提供答案。
标签: list map salesforce apex-code