No se puede ordenar la lista por orden ascendente
Map<String, String> map ; List<Map<String, String>> list = new ArrayList<Map<String, String>>(); /////OnCreate............. function1(){ map = new TreeMap<String, String>(); 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
- Establecer windowTranslucentStatus = true cuando android lollipop o superior
- Escribir y leer un archivo json en el almacenamiento interno android
- Uso de la gramática JSGF en lugar del modelo de lenguaje DMP (use -jsgf en lugar de -lm) en CMU Sphinx (pocketsphinx)
- Ilimitado / ViewPager dinámico en ambas direcciones
- Guardar imagen desde WebView
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
- Cómo convertir una cadena UTF a ANSI y crear un archivo de texto ANSI en SSD con JAVA-ANDROID
- La instalación falló debido a un URI no válido
- Obtención de Latitude y Longitud 0.0 en Android M
- Google Cloud Messaging: Valor de carga útil siempre cadena
- Cómo ejecutar "callOnClick ()" para Android API 8?
- Paso de lista <String> a String ... parámetro
- Disposición de restricción beta 4 - los fragmentos no funcionan
- Android EPSON thermal Imprimir los datos desde la vista web al hacer clic? Si la impresora no se encuentra?
Suponiendo que esta es su entrada
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);
Aquí está su código de clasificación
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); }
Salida
amount= 10 , id = 4 amount= 100 , id = 1 amount= 200 , id = 3 amount= 500 , id = 2 amount= 10000 , id = 5
actualizar
Reemplazar return Integer.parseInt(value1)-Integer.parseInt(value2);
con el código siguiente si los valores son decimales.
return Double.valueOf(value1).compareTo(Double.valueOf(value2));
Utilizar 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 se puede cortar ningún mapa según el valor utilizando el método de clasificación por defecto. Debe escribir su método personalizado para ordenar. ver este enlace- TreeMap ordenar por valor
y sugiero treemap uso si desea ordenado por clave ..
¡Gracias!
Tienes que usar el comparador personalizado y pasarlo en el constructor de Treemap. Por ejemplo para clasificarlo con el uso de la cantidad después de la comparación:
Consulte el siguiente enlace. Definitivamente resolverá su problema
http://java2novice.com/java-collections-and-util/treemap/comparator-user-object/
De forma predeterminada, la lista no está ordenada. Necesitas el método Collections.sort () que toma el comparador . Así que parece que desea ordenar por amount
, debe implementar el comparador como a continuación.
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)); } });
Aquí está la copia de trabajo completa,
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);
Debe imprimir,
[{amount=100, id=1}, {amount=200, id=2}, {amount=300, id=3}]