课程章节介绍
好,今天我们来看一个很实用的小技巧:怎么给 sObject 列表做自定义排序。
假如你有一个客户列表,想按照客户的行业、名字或者一个自定义字段来排,但直接用 List.sort 只能按默认顺序,比如 ID 或你取出来的顺序,这就很受限。这时候,Salesforce 给我们提供了两种灵活的做法。
第一种,实现 Comparator 接口。你可以单独写一个类,实现 Comparator 接口,在里面定义自己的比较逻辑,然后把这个比较器对象传给 List.sort 方法。这样,列表就会按你的规则重新排列。比如,你想按客户的年收入从高到低排,就可以在 compare 方法里写好逻辑。
第二种,如果你不想额外写一个比较器类,也可以为 sObject 创建一个包装器类,让这个包装器实现 Comparable 接口。包装器里放着那个 sObject 实例,然后你在 compareTo 方法里写自定义的排序逻辑。之后你把 sObject 包装成包装器列表,调用 sort,就能按你的逻辑排了。这种方法也很直观。
另外,如果排序要考虑到不同地区的语言、文字顺序,比如中英文混合,或者带变音符号的字母排序,可以用 Collator 类。它会帮我们处理区域相关的比较规则,让排序结果更符合当地人的阅读习惯。
简单总结,就是三个要点:Comparator 适合给现有列表外加排序规则;Comparable 包装类适合让对象自带排序能力;Collator 解决全球化排序问题。这几招在项目里经常用到,可以轻松搞定复杂排序需求。
关键词
Apex
Salesforce
Developer Guide