salesforce 零基础学习(六十三)Comparable实现Object列表数据的自定义排序

项目中通常有些需求为需要将某个sObject的数据列表按照某种规则排序显示到前台页面上,但是list上面的sort远远满足不了复杂的功能,此种情况需要自定义比较两个object大小的方法,所以需要创建Compare相关的类实现Comparable接口。

 需求:实现Goods__c列表排序,GoodsBrand__c为华为的按照价格升序排序,GoodsBrand__c为联想的按照价格降序排列。

 1 public without sharing class ComparedGoods implements Comparable{
 2     private Goods__c goods{get;set;}
 3     
 4     private static final String GOODS_BRAND_HUAWEI = '华为';
 5     
 6     private static final String GOODS_BRAND_LIANXIANG = '联想';
 7     
 8     public ComparedGoods(Goods__c obj) {
 9         goods = obj;
10     }
11     
12     public Integer compareTo(Object objectToCompareTo) {
13             Goods__c comparedGoods = (Goods__c)objectToCompareTo;
14             Integer comparedResult = 0;
15             if(comparedGoods.GoodsBrand__c == GOODS_BRAND_HUAWEI) {
16                 if(goods.GoodsPrice__c > comparedGoods.GoodsPrice__c) {
17                     comparedResult = 1;
18                 } else if(goods.GoodsPrice__c < comparedGoods.GoodsPrice__c) {
19                     comparedResult = -1;
20                 }
21             } else if(comparedGoods.GoodsBrand__c == GOODS_BRAND_LIANXIANG) {
22                 if(goods.GoodsPrice__c > comparedGoods.GoodsPrice__c) {
23                     comparedResult = -1;
24                 } else if(goods.GoodsPrice__c == comparedGoods.GoodsPrice__c) {
25                     comparedResult = 0;
26                 } 
27                 else if(goods.GoodsPrice__c < comparedGoods.GoodsPrice__c) {
28                     comparedResult = 1;
29                 }
30             }
31             return comparedResult;
32     }
33 }

用法:

总结:针对object需要比较大小的时候,可以实现Comparable接口,在其compareTo方法中实现比较的逻辑即可。此篇有错误的地方欢迎指正,有问题欢迎留言。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏carven

初探ES7 Decorator

装饰器是 ES7 新有的特性,它允许我们使用简洁的方式,为已有的类、类的方法、类的属性 添加有趣的修饰。 可使用如下:

660
来自专栏web前端教室

【先行者课程】_在线全栈备忘录(四)之mongoDB的ObjectId是什么?

今天是周二,是先行者课程“在线全栈(MongoDB&nodeJs)备忘录”的第四次课,今天的内容不是特别的多,但是却比较重要。 <!-- --> ? mong...

4136
来自专栏Golang语言社区

Golang语言goto语句

在Go编程语言中的goto语句提供无条件跳转从跳转到标记声明的功能。 注意:使用goto语句是高度劝阻的在任何编程语言,因为它使得难以跟踪程序的控制流程,使程序...

3499
来自专栏C语言及其他语言

[每日一题]C语言程序设计教程(第三版)课后习题1.6

题目描述 编写一个程序,输入a、b、c三个值,输出其中最大值。 输入 一行数组,分别为a b c 输出 a b c其中最大的数 样例输入 10 20 30 样例...

3109
来自专栏从流域到海域

《笨办法学Python》 第37课手记

《笨办法学Python》 第37课手记 本节课是复习课。关键字是指系统预先定义好的含有特定含义的字符串或者函数,注意你在自定义函数时不能与关键字重名。可是该课中...

17610
来自专栏西枫里博客

Ajax处理success回调函数返回的json数据。

站长最近在项目中用调用一个分类的子数据,由于表单要填写的数据较多,为了实现无刷新的选择操作,就使用ajax做了异步查询。查询的结果因为是多条数据,一直以来动用a...

602
来自专栏我和PYTHON有个约会

20. 企业级开发基础1:自定义模块

之前的课程中,我们已经了解了python程序设计开发的基础部分内容 包含了数据类型、变量、运算符、程序选择结构、循环结构、函数处理、字符串处理等等内容。 本...

723
来自专栏遊俠扎彪

C++ 的 Name Mangling

编程语言组织程序,都有一定的可见范围,比如Java的包、C/C++的文件。就像我们平时使用的文件夹一样,有了这些组织机制,变量、函数的命名在一定程度上就可以重复...

3560
来自专栏张戈的专栏

Linux运维基础技能: 脚本编程与Linux命令

本系列文章一共三篇,分别为《脚本编程与 Linux 命令》、《接入层与网络基础》和《 MySQL 与 SQL 优化》,由腾讯高级工程师 luaruan(阮永顺)...

981
来自专栏python3

python 三级菜单

用户选择菜单的时候,如果输入中文,打字比较麻烦,菜单列表需要有一个编号。由于字典没有编号,列表是有索引,这里可以用做编号。所以需要将zone.keys()的结果...

702

扫码关注云+社区