Salesforce 如何对列表进行排序<;地图<;字符串,字符串>&燃气轮机;

Salesforce 如何对列表进行排序<;地图<;字符串,字符串>&燃气轮机;,salesforce,Salesforce,我已经找到了很多关于如何对列表排序的信息,但是没有一个是关于如何对列表进行排序的>。具体而言,我有一张关键值的地图,如: "Name": "John", "Savings": 300 我有一个像这样的对象列表,需要按“节省”排序。有什么想法吗?您研究过类似的界面吗?您需要将映射包装到一个新类中,该类具有comparable()方法,以便使其可排序。更多信息请点击此处: 公共类MapWrapper实现了可比较的{ 公共地图记录; 公共映射包装器(映射记录){ this.record=记录; }

我已经找到了很多关于如何对列表排序的信息,但是没有一个是关于如何对列表进行排序的>。具体而言,我有一张关键值的地图,如:

"Name": "John",
"Savings": 300

我有一个像这样的对象列表,需要按“节省”排序。有什么想法吗?

您研究过类似的界面吗?您需要将映射包装到一个新类中,该类具有comparable()方法,以便使其可排序。更多信息请点击此处:

公共类MapWrapper实现了可比较的{
公共地图记录;
公共映射包装器(映射记录){
this.record=记录;
}
公共整数比较对象(对象比较对象){
MapWrapper compareToMap=(MapWrapper)compareTo;
if(record.get('Savings')==compareToMap.record.get('Savings')返回0;
if(record.get('Savings')>compareToMap.record.get('Savings')返回1;
返回-1;
}
}
您的列表将包含MapWrapper对象,而不是Map。然后可以使用List.sort()对其进行排序:

List myList=newmapwrapper[]{};
add(新映射包装器(新映射{'Name'=>'John','Savings'=>'300'});
add(新映射包装器(新映射{'Name'=>'David','Savings'=>'100'});
系统调试(myList)//未分类
myList.sort();
系统调试(myList)//分类
如果您需要在没有包装器的情况下将结构保持为
列表
,您仍然可以这样做,但您需要自己实现排序算法。最简单的方法是使用冒泡排序

public class MapWrapper implements Comparable {

    public Map<String,String> record;

    public MapWrapper(Map<String,String> record) {
        this.record = record;
    }

    public Integer compareTo(Object compareTo) {
        MapWrapper compareToMap = (MapWrapper)compareTo;
        if (record.get('Savings') == compareToMap.record.get('Savings')) return 0;
        if (record.get('Savings') > compareToMap.record.get('Savings')) return 1;
        return -1;        
    }
}
List<MapWrapper> myList = new MapWrapper[]{};
myList.add(new MapWrapper(new Map<String,String>{'Name'=>'John','Savings'=>'300'}));
myList.add(new MapWrapper(new Map<String,String>{'Name'=>'David','Savings'=>'100'}));

System.debug(myList); //Unsorted
myList.sort();
System.debug(myList); //Sorted