无法按升序对列表进行排序
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
这是您的排序代码
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}]