0
 List<Map<String,String>> consolidErr = new LinkedList<Map<String,String>>();

 Map m1= new HashMap<String,String>();
 m1.put("id","1");
 m1.put("value","value1");

 Map m2= new HashMap<String,String>();
 m2.put("id","2");
 m2.put("value","value2");

 Map m3= new HashMap<String,String>();
 m3.put("id","3");
 m3.put("value","value3");

add all m1,m3 and m2 in list

次に、マップ内のIDに基づいてマップを並べ替えます。ここで、リスト内のマップをm1、m2、およびm3として並べ替えます。

マップ内のIDに基づいて並べ替えたいので、リストの反復を使用してソートし、マップの最初のIDをチェッカーとして保持し、組み込みのメソッドを使用する以外の方法がある場合は、次のIDと比較します。今これのためにバブルソートを使用してあなたのideas.amを与えてください。

4

3 に答える 3

4

これをJavaで(または少なくとも混乱を最小限に抑えて)行う最も簡単な方法は、カスタムコンパレータを使用することです。

アイデアは、自然ソート(Comparableを拡張するもの)を持つオブジェクトがある場合、ソートを要求することができるということです。

Collections.sort(List<Integer> .. 

それ以外の場合は、オブジェクトをどのように比較するかを説明するコンパレータを、必要なカスタムロジックと一緒に渡すことができます(大まかに言うと、これは頭から離れており、エラーチェックはありませんが、十分なはずです)。アイデア) -

List<Map<String,String>> consolidErr = ...
enter code here
Collections.sort(consolidErr, new Comparator<Map<String,String>>(){
     public int compare(Map<String,String> a, Map<String,String> b){ 
        return a.get("id").compareTo(b.get("id"));}
    })
于 2013-02-11T04:53:28.020 に答える
1

Java 8では、を1行でソートできlistますmaps

list.sort(Comparator.comparing((Map<String,String> mp) -> mp.get("Id")));
于 2017-11-22T14:25:40.700 に答える
0

代わりにPriorityQueueを使用します

リストのラッパーとして。作成時にComparatorをコンストラクターに提供することにより、リストに新しい要素を挿入するたびに、リストがソートされたままになることが保証されます。

于 2013-02-11T12:53:12.113 に答える