@@ -28,22 +28,26 @@ public <T extends Comparable<T>> T[] sort(T[] array) {
28
28
*/
29
29
@ Override
30
30
public <T extends Comparable <T >> List <T > sort (List <T > list ) {
31
- // TreeMap to maintain order of elements naturally.
32
- Map <T , Integer > frequencyMap = new TreeMap <>();
33
-
34
- // Count the frequency of each element in the list.
35
- for (T element : list ) {
36
- frequencyMap .put (element , frequencyMap .getOrDefault (element , 0 ) + 1 );
37
- }
31
+ Map <T , Integer > frequencyMap = computeHistogramMap (list );
32
+ return formSortedArrayFromHistogramMap (list , frequencyMap );
33
+ }
38
34
39
- // Create the sorted list based on the frequency map.
35
+ private static < T extends Comparable < T >> List < T > formSortedArrayFromHistogramMap ( List < T > list , Map < T , Integer > frequencyMap ) {
40
36
List <T > sortedList = new ArrayList <>(list .size ());
41
37
for (Map .Entry <T , Integer > entry : frequencyMap .entrySet ()) {
42
38
for (int i = 0 ; i < entry .getValue (); i ++) {
43
39
sortedList .add (entry .getKey ());
44
40
}
45
41
}
46
-
47
42
return sortedList ;
48
43
}
44
+
45
+ private static <T extends Comparable <T >> Map <T , Integer > computeHistogramMap (List <T > list ) {
46
+ // TreeMap to maintain order of elements naturally.
47
+ Map <T , Integer > frequencyMap = new TreeMap <>();
48
+ for (T element : list ) {
49
+ frequencyMap .put (element , frequencyMap .getOrDefault (element , 0 ) + 1 );
50
+ }
51
+ return frequencyMap ;
52
+ }
49
53
}
0 commit comments