Treemap and three ways to iterate map
Treemap sort map by key(ascending)
Map<Integer, String> tmap =
new TreeMap<Integer, String>();
/*
Map<Integer, String> tmap =
new TreeMap<Integer, String>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});*/
/*Adding elements to TreeMap*/
tmap.put(1, "Data1");
tmap.put(23, "Data2");
tmap.put(70, "Data3");
tmap.put(4, "Data4");
tmap.put(2, "Data5");
// convert map to entrySet
Set<Map.Entry<Integer, String>> set = tmap.entrySet();
System.out.println(set);
for(Map.Entry<Integer, String> entry : set){
System.out.println("key is: "+ entry.getKey() + " & Value is: " + entry.getValue());
}
System.out.println();
/* Display content using Iterator*/
Iterator<Map.Entry<Integer, String>> iterator = set.iterator();
while(iterator.hasNext()) {
Map.Entry<Integer, String> mentry = iterator.next();
System.out.print("key is: "+ mentry.getKey() + " & Value is: ");
System.out.println(mentry.getValue());
}
System.out.println();
for (Integer key : tmap.keySet()){
System.out.println("key is: "+ key + " & Value is: " + tmap.get(key));
}
Sort HashMap by value
Map<Integer, Integer> map = new HashMap<>();
/*Adding elements to TreeMap*/
map.put(1, 2);
map.put(2, 1);
map.put(3, 9);
map.put(4, 6);
map.put(5, 3);
map.put(6, 5);
Set<Map.Entry<Integer, Integer>> set = map.entrySet();
List<Map.Entry<Integer, Integer>> list = new LinkedList<>(map.entrySet());
System.out.println(list);
Collections.sort(list, new Comparator<Map.Entry<Integer, Integer>>() {
public int compare(Map.Entry<Integer, Integer> o1, Map.Entry<Integer, Integer> o2) {
return o1.getValue().compareTo(o2.getValue());
}
});
System.out.println("after sort: ");
System.out.println(list);
// put back to map
Map<Integer, Integer> result = new LinkedHashMap<Integer, Integer>();
for (Map.Entry<Integer, Integer> entry : list) {
result.put(entry.getKey(), entry.getValue());
}
System.out.println(result);