【探索Apex开发之】 使用Map时的几个技巧,让你的代码更高效
2023年09月08日
文章浏览:269

Map(映射)是一种数据结构,用于存储键值对。

在Salesforce的Apex编程语言中,Map是一种集合数据类型,用于存储一组唯一键(Key)和每个键关联的值(Value)。

基础用法

在Apex中,你可以这样初始化一个Map,并且添加或访问元素:

Map<String, Integer> scoreMap = new Map<String, Integer>(); //初始化声明
scoreMap.put('Math', 70); //添加元素
scoreMap.put('Math', 90); //※put方法不仅可以用于插入新值,还可以用于更新现有的键值对。
scoreMap.put('English', 85);
Integer mathScore = scoreMap.get('Math');  // 取得元素值,返回 90
scoreMap.remove('Math'); //删除元素


进阶用法

1.初始化声明的同时,使用映射符填充元素

Map<String, Integer> myMap = new Map<String, Integer>{'key1'=>1, 'key2'=>2};

2.SOQL查询直接填充Map

Map<Id, Account> accountMap = new Map<Id, Account>([SELECT Id, Name FROM Account WHERE SomeField__c = :someValue]);

3.使用keySet和values方法

当需要处理所有键或所有值时,使用这些方法非常有用。

Set<String> keys = myMap.keySet();
List<Integer> values = myMap.values();

4.使用containsKey()判断元素是否存在

Map<String, Integer> scoreMap = new Map<String, Integer>();
scoreMap.put('Math', 90);
scoreMap.put('English', 85);

// 检查'Math'是否为有效的键
if (scoreMap.containsKey('Math')) {
    System.debug('Math score exists: ' + scoreMap.get('Math'));
} else {
    System.debug('Math score does not exist.');
}

5.使用get方法与null检查

当你尝试获取Map中不存在的键值时,使用get方法将返回null,这样你就可以避免使用containsKey进行额外检查。

Integer value = myMap.get('someKey');
if(value != null) {
    // Do something
}

6.批量处理

如果你有一个Id列表(例如,从触发器中获取),并且你想得到这些Id对应的对象,你可以一次性用这些Id填充Map。

List<Id> ids = new List<Id>{'001...', '002...'}; // example Ids
Map<Id, Account> accounts = new Map<Id, Account>([SELECT Id, Name FROM Account WHERE Id IN :ids]);

7.使用putAll()合并Maps

Map<String, Integer> map1 = new Map<String, Integer>{'a'=>1, 'b'=>2};
Map<String, Integer> map2 = new Map<String, Integer>{'c'=>3};
map1.putAll(map2);

以上,欢迎补充!

关注 收藏
2023年09月08日

这个归纳很可以啊!! 赞

回复