2016-07-12 5 views
0

Listをソートする方法については多くの情報が見つかりましたが、リストをソートする方法はありません。私はこのようなオブジェクトの束のリストを持っていると「貯蓄」にソートする必要がどのようにソートリスト<Map <String、String >>

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

:特に私のようなキー値のマップを持っています。何か案は?

答えて

1

Comparableインターフェイスについて調べましたか?ソート可能にするには、Comparable()メソッドを持つ新しいクラスの中にMap < String、String>をラップする必要があります。詳細:https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_comparable.htm

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;   
    } 
} 

あなたのリストではなく、地図<文字列、文字列>のMapWrapperオブジェクトが含まれています。あなたがラッパーなしでList<Map<String,String>>としてあなたの構造を維持する必要がある場合、あなたはまだそれを行うことができ、

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 

いますが、ソート自身を、アルゴリズム実装する必要があります:あなたは、その後はlist.sort()を使用して、それを並べ替えることができます。これを行う最も簡単な方法は、バブルソートを使用することです。

関連する問題