Tri LinkedHashMap
comment trier un LinkedHashMap en fonction de ses valeurs étant donné que le LinkedHashMap contient de la chaîne et un nombre entier. Donc j'ai besoin de le trier basé sur les valeurs qui sont des entiers. Merci beaucoup
37
demandé sur
Mike Causer
2012-08-29 22:35:49
4 réponses
c'est maintenant un peu plus facile avec Java 8 streams: vous n'avez pas besoin de la carte intermédiaire pour trier:
map.entrySet().stream()
.sorted(Map.Entry.comparingByValue())
.forEach(entry -> ... );
30
répondu
sprinter
2015-01-09 12:15:09
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());
}
68
répondu
Louis Wasserman
2012-08-29 18:40:19
LinkedHashMap
maintient l'ordre d'insertion. Si vous souhaitez trier basés sur la valeur, vous pouvez avoir besoin d'écrire votre propre comparator
.
4
répondu
kosa
2012-08-29 18:37:11
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());
}
}
2
répondu
Sachindra N. Pandey
2017-09-04 10:14:43