题目描述
统计频率,并按序输出
实现
public class Solution {
public static void sortValue(int[] nums) {
TreeMap<Integer, Integer> map = new TreeMap<>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2.compareTo(o1);
}
});
for (int i = 0; i < nums.length; i++) {
if (map.get(nums[i]) == null) {
map.put(nums[i], 1);
} else {
int count = map.get(nums[i]);
map.put(nums[i], count + 1);
}
}
List<Map.Entry<Integer, Integer>> list = new ArrayList<>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<Integer, Integer>>() {
//降序排序
public int compare(Map.Entry<Integer, Integer> o1, Map.Entry<Integer, Integer> o2) {
return o2.getValue().compareTo(o1.getValue());
}
});
for (Map.Entry<Integer,Integer> m:list) {
System.out.println(m.getKey()+":"+m.getValue());
}
}
public static void main(String[] args) {
int[] nums = {1, 2, 35, 5, 35, 2, 56};
sortValue(nums); // [35=2, 2=2, 56=1, 5=1, 1=1]
}
}