Maps — Key-Value Pairs

DEX455 - 编写 Apex 代码:数据类型、集合、变量与运算符完全参考

📄 第 88 页 🎬 视频课程

课程章节介绍

同学们,咱们今天来看一个特别实用的知识点——Apex里的Map,也就是映射。 你可以把Map理解成一个存放“键值对”的容器,就像一本通讯录。通讯录里,每个联系人有一个独一无二的姓名作为“键”,后面的电话号码就是“值”。这个键必须是唯一的,一个姓名只能对应一个最新号码,如果你又用同一个姓名存了一个新号码,那旧号码就被覆盖掉了。而值是可以重复的,不同联系人当然可以有相同的电话号码。 在Apex里,我们怎么初始化一个Map呢?用大括号括起来,然后用一个箭头 `=>` 把键和值连起来。比如这样: ```apex Map phoneBook = new Map{ '张三' => '13800001111', '李四' => '13900002222' }; ``` 你看,是不是很直观? 在Apex编程里,有一个最常用的Map模式,就是从记录ID到sObject对象的映射。因为Salesforce里的每一条记录,无论是客户、联系人或自定义对象,都有一个全局唯一的ID,用这个ID作为键,可以直接拿到对应的整个记录对象,查找起来非常快,是恒定时间,也就是说,无论数据量多大,这个查找几乎都瞬间完成。 所以,我们经常能看到类似 `Map` 这样的声明。比如你有一个账户列表,你想通过ID快速找到某个账户,这时Map就太好用了。 而且,Apex还贴心地提供了一个非常方便的构造函数,你只要把一个sObject列表直接传进去,它就会自动帮你生成一个以每条记录的ID为键、记录本身为值的Map。就好比把一堆名片扔进一个神奇机器,瞬间就整理出一本按编号索引的名片簿。比如: ```apex List accList = [SELECT Id, Name FROM Account LIMIT 10]; Map accMap = new Map(accList); ``` 这样,你就可以随时用 `accMap.get(someId)` 拿到对应账户了。 好,这个Slide的核心就这么多。简单回顾下:Map是键值对,键唯一值可重复;用箭头语法初始化;最常见的是Id到sObject的Map,实现快速查找;并且可以直接用列表构造出这个Map。在后面的触发器、批量处理里,你会经常跟它打交道,把它掌握好,你的代码效率会高很多。

关键词

Apex Salesforce Developer Guide