¿Cómo puedo ordenar un LinkedHashMap en función de sus valores dado que LinkedHashMap contiene String e Integer? Así que tengo que ordenarlo en función de los valores que son enteros. Muchas graciasOrdenando LinkedHashMap
Respuesta
Este es ahora un poco más fácil con Java 8 corrientes: no es necesario el mapa intermedio para ordenar:
map.entrySet().stream()
.sorted(Map.Entry.comparingByValue())
.forEach(entry -> ...);
LinkedHashMap
simplemente mantiene la orden de inserción. Si desea ordenar según el valor, es posible que deba escribir su propio comparator
.
Brillante, sí, muchas gracias, escribí mi propio comparador – Ramin
No creo que necesite escribir su propio comparador. 'Map.Entry.comparingByValue()' debería generar uno para usted. Y puede ser revertido por 'Collections.reverseOrder (Map.Entry.comparingByValue())'. – sprinter
@sprinter: ¿Qué pasa si el valor es tipo de cualquier objeto personalizado? – kosa
List<Map.Entry<String, Integer>> entries =
new ArrayList<Map.Entry<String, Integer>>(map.entrySet());
Collections.sort(entries, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> a, Map.Entry<String, Integer> b){
return a.getValue().compareTo(b.getValue());
}
});
Map<String, Integer> sortedMap = new LinkedHashMap<String, Integer>();
for (Map.Entry<String, Integer> entry : entries) {
sortedMap.put(entry.getKey(), entry.getValue());
}
¡Maldición, estaba escribiendo exactamente el mismo código! :) Excepto por la última parte, no creo que OP realmente necesite tenerlos de vuelta en un mapa. –
muchas gracias. pieza muy útil de código – Ramin
Nice answer. Tuve que ordenar en orden descendente, así que agregué un signo -ve al devolver el valor del Comparador. –
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.NavigableMap;
import java.util.SortedMap;
import java.util.TreeMap;
public class HashMapTest {
public static void main(String[] args) {
Map<String, Integer> map=new LinkedHashMap<String, Integer>();
map.put("a", 11);
map.put("B", 12);
map.put("c", 3);
map.put("d", 4);
map.put("e", 5);
map.put("f", 6);
map.put("g", 7);
map.put("h", 8);
map.put("i", 9);
map.put("j", 3);
map.put("k", 2);
map.put("l", 1);
List<Map.Entry<String, Integer>> entries = new
ArrayList<Map.Entry<String, Integer>>(map.entrySet());
Collections.sort(entries,new CustomizedHashMap());
Map<String, Integer> sortedMap = new LinkedHashMap<String,
Integer>();
for (Map.Entry<String, Integer> entry : entries) {
sortedMap.put(entry.getKey(), entry.getValue());
System.out.print(sortedMap.put(entry.getKey(),
entry.getValue())+" ");
}
}
}
class CustomizedHashMap implements Comparator<Map.Entry<String, Integer>> {
@Override
public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
// TODO Auto-generated method stub
return -o1.getValue().compareTo(o2.getValue());
}
}
- 1. LinkedHashMap firma
- 2. Shrink LinkedHashMap en Java
- 3. LinkedHashMap en .NET
- 4. Implementando un LinkedHashMap concurrente
- 5. LinkedHashMap ¿LIFO o FIFO?
- 6. Equivalente para LinkedHashMap en Python
- 7. Ordenando NSDictionary
- 8. Ordenando NSTableView
- 9. Ordenando música
- 10. Ordenando Directory.GetFiles()
- 11. Java LinkedHashMap get first or last entry
- 12. ¿Cómo obtengo un keyIterator para un LinkedHashMap?
- 13. Obtiene el primer ítem de linkedhashmap
- 14. LinkedHashMap <String, Object> .clone();
- 15. serialize/deserialize un LinkedHashMap (android) java
- 16. ¿Qué es LinkedHashMap <k, v>?
- 17. Obtener el siguiente artículo en LinkedHashMap?
- 18. LinkedHashMap vs HashMap! = LinkedList vs ArrayList
- 19. Ordenando dos matrices correspondientes
- 20. Ordenando meses en R
- 21. Ordenando por lambda arbitraria
- 22. Elemento Qt4 QMenu ordenando
- 23. Java equals() ordenando
- 24. ggplot2: ordenando un diagrama
- 25. PopupWindow z ordenando
- 26. Ordenando Iteradores de PHP
- 27. Ordenando tuplas en F #
- 28. Ordenando una colección compuesta
- 29. Ordenando archivos por fecha
- 30. Ordenando dinámicamente con LINQ
¿Tiene que usar un LinkedHashMap? TreeMap podría ayudar? – RNJ
esto puede ayudar a http://stackoverflow.com/questions/780541/how-to-sort-hash-map – RNJ
Oh. Ya veo. No me molesté en leer los comentarios.^_^ – DankMemes