Java 无法按升序对列表排序
使用sort() 例:Java 无法按升序对列表排序,java,android,sorting,arraylist,treemap,Java,Android,Sorting,Arraylist,Treemap,使用sort() 例: 现在,它将按所包含内容类型的升序打印列表。否。。不能使用默认排序方法根据值缩短任何映射。 您应该编写用于排序的自定义方法。 请参阅此链接- 如果你想按键排序,我建议使用树形图 谢谢 您必须使用自定义比较器并将其传递到Treemap的构造函数中。例如,使用以下比较器按数量进行排序: 请参阅以下链接。它肯定会解决你的问题 默认情况下,列表未排序。你需要一种有效的方法。因此,如果您希望按数量进行排序,则应实现如下所示的比较器 list.add(map); Collection
现在,它将按所包含内容类型的升序打印列表。否。。不能使用默认排序方法根据值缩短任何映射。 您应该编写用于排序的自定义方法。 请参阅此链接- 如果你想按键排序,我建议使用树形图
谢谢 您必须使用自定义比较器并将其传递到Treemap的构造函数中。例如,使用以下比较器按数量进行排序: 请参阅以下链接。它肯定会解决你的问题
默认情况下,列表未排序。你需要一种有效的方法。因此,如果您希望按
数量进行排序,则应实现如下所示的比较器
list.add(map);
Collections.sort(list)
System.out.println(list)
假设这是您的输入
[{amount=100, id=1}, {amount=200, id=2}, {amount=300, id=3}]
更新
替换返回Integer.parseInt(value1)-Integer.parseInt(value2)如果值为十进制,则使用以下代码编码>
amount= 10 , id = 4
amount= 100 , id = 1
amount= 200 , id = 3
amount= 500 , id = 2
amount= 10000 , id = 5
您好,Mittal先生,但我得到以下错误:绑定不匹配:类型集合的泛型方法排序(列表)不适用于参数(列表)。推断的类型映射不是有界参数的有效替代品。请检查我的答案,给定链接,您将仅在那里获得答案。如果没有任何自定义方法,您无法按值对地图进行排序。您好,Manish。我如何将更改应用于上面的现有代码。请您使用更改对其进行编辑。这将非常有帮助。谢谢亲爱的!你面前的一切,你自己试试吧。没有人会为你做饭。你好,Srivastava先生,我检查了你的答案,但我检查了,示例是如何转换代码。另外,如果你能将代码编辑为我上面显示的代码,那将非常有帮助。再次感谢你抽出时间,非常感谢。Map=new TreeMap();地图放置(“A”、“A”);地图放置(“B”、“B”);系统输出打印项次(map);你好,JayaMohan。在最后一次比较(排序)之前,它工作正常。最后一个值没有排序,它仍然保持在相同的位置。我已经更新了compare
方法。你能试试吗。如果你的金额是十进制数,你可以将比较改为Double(amount1)。compareTo(new Double(amount2))
。它将适用于int和decimal值Shello Jayamohan+1真棒!我首先使用了Prabhakaran的工作代码,我会接受他的回答。再次感谢。对不起。你好,Prabhakaran。感谢代码和时间,但是如果金额有小数点,我的意思是不是整数,而是浮点/双精度。如何进行更改当前我在此行中遇到错误,返回Integer.parseInt(value1)-Integer.parseInt(value2);当我将其更改为double时,返回类型中出现错误。非常感谢代码和+1。我还向hashmap添加了另一个包含大量lat/lng的字符串。我将如何再次将其放入arraylist.arraylist顶点。使用它检索字符串idlatlng=map1.get(“latlng”);但是我有一个很长的列表。请帮助Phabhakaran。谢谢。@jason很高兴收到你的来信……你能用你喜欢的输入和预期的输出提出另一个问题吗……这样就可以清楚地理解这个问题,另一件事是,许多人会为你的问题给出最好的答案。我也会尽我最大的努力…非常感谢现在也会这么做。我会先尝试自己做。再次感谢您的回复。您好,先生,我刚刚发布了问题。请查看。谢谢。
Collections.sort(list, new Comparator<Map<String, String>>() {
@Override
public int compare(Map<String, String> o1, Map<String, String> o2) {
String amount1 = o1.get("amount");
String amount2 = o2.get("amount");
return new Integer(amount1).compareTo(new Integer(amount2));
}
});
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
Map<String, String> map1 = new TreeMap<String, String>();
map1.put("id", "2");
map1.put("amount", "200");
Map<String, String> map2 = new TreeMap<String, String>();
map2.put("id", "1");
map2.put("amount", "100");
Map<String, String> map3 = new TreeMap<String, String>();
map3.put("id", "3");
map3.put("amount", "300");
list.add(map1);
list.add(map2);
list.add(map3);
Collections.sort(list, new Comparator<Map<String, String>>() {
@Override
public int compare(Map<String, String> o1, Map<String, String> 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}]
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 Double.valueOf(value1).compareTo(Double.valueOf(value2));