No se puede ordenar la lista por orden ascendente

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); } 

valores de entrada para id = 1,3,5,57,80

valores de entrada para la cantidad = 100,500,200,10,10000

No se puede ordenar la lista por orden ascendente de cantidad. Todavía se muestra en el orden en que se insertó.

¿Cómo puedo solucionar esto? Aprecio cualquier ayuda. Gracias por adelantado.

Salida esperada: orden ascendente de la cantidad:

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

Suponiendo que esta es su entrada

  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); 

Aquí está su código de clasificación

  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); } 

Salida

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

actualizar

Reemplace la return Integer.parseInt(value1)-Integer.parseInt(value2); con el siguiente código si los valores son decimales.

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

Usa sort ()

Ex:

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

ahora imprimirá la lista en orden ascendente del tipo de contenido que contiene.

No … No puede abreviar ningún mapa según el valor utilizando el método de clasificación predeterminado. Debe escribir su método personalizado para la clasificación. ver este enlace- TreeMap ordenar por valor

y te sugiero usar treemap si quieres ordenado por clave ..

¡Gracias!

Tienes que usar el Comparador personalizado y pasarlo al constructor de Treemap. Por ejemplo, para clasificarlo con la cantidad de uso siguiente comparador:

Consulte el siguiente enlace. Definitivamente resolverá tu problema

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

Por defecto, la lista no está ordenada. Necesitas el método Collections.sort () que toma Comparator . Así que parece que usted quiere ordenar por amount , debe implementar el comparador como se muestra a continuación.

 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)); } }); 

Aquí está la copia de trabajo completa,

 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); 

Se debe imprimir,

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