无法按升序对列表进行排序

Map map ; List<Map> list = new ArrayList<Map>(); /////OnCreate............. function1(){ map = new TreeMap(); map.put("id", "id"); map.put("amont", "amount"); list.add(map); System.out.println(list); } 

id = 1,3,5,57,80的输入值

金额的输入值= 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 

假设这是你的输入

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

这是您的排序代码

  Collections.sort(list, new Comparator>() { @Override public int compare(Map o1, Map o2) { String value1 = o1.get("amount"); String value2 = o2.get("amount"); return Integer.parseInt(value1)-Integer.parseInt(value2); } }); for (Map 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); 如果值为十进制,则使用以下代码。

 return Double.valueOf(value1).compareTo(Double.valueOf(value2)); 

使用sort()

例如:

 list.add(map); Collections.sort(list) System.out.println(list) 

它现在将按照其包含的内容类型的升序打印列表。

否..您不能使用默认排序方法根据值缩短任何地图。 您应该编写自定义方法进行排序。 看到这个链接 – TreeMap按值排序

如果你想按键排序,我建议使用treemap。

谢谢!

您必须使用自定义Comparator并在Treemap的构造函数中传递它。 例如,使用比较器后的金额进行排序:

请参阅以下链接。 它肯定会解决你的问题

http://java2novice.com/java-collections-and-util/treemap/comparator-user-object/

默认情况下,列表未排序。 你需要带有Comparator的 Collections.sort()方法。 所以看起来你想按amount排序,你应该像下面那样实现比较器。

 Collections.sort(list, new Comparator>() { @Override public int compare(Map o1, Map o2) { String amount1 = o1.get("amount"); String amount2 = o2.get("amount"); return new Integer(amount1).compareTo(new Integer(amount2)); } }); 

这是完整的工作副本,

 List> list = new ArrayList>(); Map map1 = new TreeMap(); map1.put("id", "2"); map1.put("amount", "200"); Map map2 = new TreeMap(); map2.put("id", "1"); map2.put("amount", "100"); Map map3 = new TreeMap(); map3.put("id", "3"); map3.put("amount", "300"); list.add(map1); list.add(map2); list.add(map3); Collections.sort(list, new Comparator>() { @Override public int compare(Map o1, Map o2) { String amount1 = o1.get("amount"); String amount2 = o2.get("amount"); return amount1.compareTo(amount2); } }); System.out.println(list); 

它应该打印,

 [{amount=100, id=1}, {amount=200, id=2}, {amount=300, id=3}]