3
Map<String, String> map ;
List<Map<String, String>> list = new ArrayList<Map<String, String>>();


/////OnCreate.............


function1(){
map = new TreeMap<String, String>();
map.put("id", "id");
map.put("amont", "amount");

list.add(map);

System.out.println(list);
}

id=1,3,5,57,80 の入力値

amount=100,500,200,10,10000 の入力値

金額の昇順でリストを並べ替えることができません。挿入された順に表示されます。

これを修正するにはどうすればよいですか? 助けていただければ幸いです。前もって感謝します。

期待される出力: 金額の昇順:

amt=10 id=4  
amt=100 id=1  
amt=200 id=3  
amt=500 id=2  
amt=10000 id=5  
4

5 に答える 5

2

これがあなたの入力であると仮定すると

  Map<String, String> map ;
  List<Map<String, String>> list = new ArrayList<Map<String, String>>();
  map = new TreeMap<String, String>();
  map.put("id","1");
  map.put("amount","100");
  list.add(map);
  map = new TreeMap<String, String>();
  map.put("id","2");
  map.put("amount","500");  
  list.add(map);
  map = new TreeMap<String, String>();
  map.put("id","3");
  map.put("amount","200");
  list.add(map);
  map = new TreeMap<String, String>();
  map.put("id","4");
  map.put("amount","10");
  list.add(map);
  map = new TreeMap<String, String>();
  map.put("id","5");
  map.put("amount","10000");
  list.add(map);

ここにあなたのソートコードがあります

  Collections.sort(list, new Comparator<Map<String, String>>() {

        @Override
        public int compare(Map<String, String> o1, Map<String, String> o2) {
            String value1 =  o1.get("amount");
            String value2 =  o2.get("amount");
            return Integer.parseInt(value1)-Integer.parseInt(value2);
        }
    });

    for (Map<String, String> map1 : list) {
        String id = map1.get("id");
        String amount = map1.get("amount");
        System.out.println("amount= "+amount + " , " +"id = "+id);
    }

出力

amount= 10 , id = 4
amount= 100 , id = 1
amount= 200 , id = 3
amount= 500 , id = 2
amount= 10000 , id = 5

アップデート

return Integer.parseInt(value1)-Integer.parseInt(value2);値が 10 進数の場合は、次のコードに置き換えます。

return Double.valueOf(value1).compareTo(Double.valueOf(value2));
于 2013-10-09T06:35:31.880 に答える
1

いいえ..デフォルトのソート方法を使用して、値に従ってマップをショートすることはできません。ソート用のカスタム メソッドを作成する必要があります。このリンクを参照してください - TreeMap 値による並べ替え

キーでソートしたい場合は、ツリーマップを使用することをお勧めします..

ありがとう!

于 2013-10-09T06:09:41.497 に答える
1

sort() を使用する

元:

list.add(map);
Collections.sort(list)

System.out.println(list)

含まれるコンテンツの種類の昇順でリストを出力するようになりました。

于 2013-10-09T06:07:37.577 に答える