Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法按升序对列表排序_Java_Android_Sorting_Arraylist_Treemap - Fatal编程技术网

Java 无法按升序对列表排序

Java 无法按升序对列表排序,java,android,sorting,arraylist,treemap,Java,Android,Sorting,Arraylist,Treemap,使用sort() 例: 现在,它将按所包含内容类型的升序打印列表。否。。不能使用默认排序方法根据值缩短任何映射。 您应该编写用于排序的自定义方法。 请参阅此链接- 如果你想按键排序,我建议使用树形图 谢谢 您必须使用自定义比较器并将其传递到Treemap的构造函数中。例如,使用以下比较器按数量进行排序: 请参阅以下链接。它肯定会解决你的问题 默认情况下,列表未排序。你需要一种有效的方法。因此,如果您希望按数量进行排序,则应实现如下所示的比较器 list.add(map); Collection

使用sort()

例:


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

否。。不能使用默认排序方法根据值缩短任何映射。 您应该编写用于排序的自定义方法。 请参阅此链接-

如果你想按键排序,我建议使用树形图


谢谢

您必须使用自定义比较器并将其传递到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));