EN
Java - sort HashMap by values
14 points
Short solution:
xxxxxxxxxx
1
Map<String, Integer> map = new HashMap<>();
2
// put key / value to map
3
4
List<Map.Entry<String, Integer>> sorted = new ArrayList<>(map.entrySet());
5
sorted.sort(Map.Entry.comparingByValue());
6
7
// we iterate over sorted entry list
8
for (Map.Entry<String, Integer> entry : sorted) {
9
String key = entry.getKey();
10
Integer value = entry.getValue();
11
12
System.out.println("Key: " + key + ", Value : " + value);
13
}
Another short solution:
xxxxxxxxxx
1
Map<String, Integer> map = new HashMap<>();
2
// put key / value to map
3
4
map.entrySet()
5
.stream()
6
.sorted(Map.Entry.comparingByValue())
7
.forEach(entry -> {
8
String key = entry.getKey();
9
Integer value = entry.getValue();
10
11
System.out.println("Key: " + key + ", Value : " + value);
12
});
xxxxxxxxxx
1
import java.util.ArrayList;
2
import java.util.HashMap;
3
import java.util.List;
4
import java.util.Map;
5
6
public class Example1 {
7
8
public static void main(String[] args) {
9
10
Map<String, Integer> map = new HashMap<>();
11
map.put("YY", 3);
12
map.put("ZZ", 4);
13
map.put("CC", 2);
14
map.put("AA", 1);
15
16
System.out.println("Unsorted:");
17
map.forEach((key, value) -> {
18
System.out.println("Key: " + key + ", Value : " + value);
19
});
20
21
System.out.println("---------");
22
23
List<Map.Entry<String, Integer>> sorted = new ArrayList<>(map.entrySet());
24
sorted.sort(Map.Entry.comparingByValue());
25
26
System.out.println("Sorted:");
27
// we iterate over sorted entry list
28
for (Map.Entry<String, Integer> entry : sorted) {
29
String key = entry.getKey();
30
Integer value = entry.getValue();
31
32
System.out.println("Key: " + key + ", Value : " + value);
33
}
34
}
35
}
Output:
xxxxxxxxxx
1
Unsorted:
2
Key: YY, Value : 3
3
Key: ZZ, Value : 4
4
Key: CC, Value : 2
5
Key: AA, Value : 1
6
---------
7
Sorted:
8
Key: AA, Value : 1
9
Key: CC, Value : 2
10
Key: YY, Value : 3
11
Key: ZZ, Value : 4
xxxxxxxxxx
1
import java.util.HashMap;
2
import java.util.Map;
3
4
public class Example2 {
5
6
public static void main(String[] args) {
7
8
Map<String, Integer> map = new HashMap<>();
9
map.put("YY", 3);
10
map.put("ZZ", 4);
11
map.put("CC", 2);
12
map.put("AA", 1);
13
14
System.out.println("Unsorted:");
15
map.forEach((key, value) -> {
16
System.out.println("Key: " + key + ", Value : " + value);
17
});
18
19
System.out.println("---------");
20
21
System.out.println("Sorted:");
22
map.entrySet()
23
.stream()
24
.sorted(Map.Entry.comparingByValue())
25
.forEach(entry -> {
26
String key = entry.getKey();
27
Integer value = entry.getValue();
28
29
System.out.println("Key: " + key + ", Value : " + value);
30
});
31
}
32
}
Output:
xxxxxxxxxx
1
Unsorted:
2
Key: YY, Value : 3
3
Key: ZZ, Value : 4
4
Key: CC, Value : 2
5
Key: AA, Value : 1
6
---------
7
Sorted:
8
Key: AA, Value : 1
9
Key: CC, Value : 2
10
Key: YY, Value : 3
11
Key: ZZ, Value : 4