给定一个数组,按照频率进行排序,频率高的排在前面,频率低的排在后面,频率相同的安装出现的向后顺序排序:
输入: 【1,2,4,3,3,3,4,2,5,5,5,5,6,6,6,7,10,8,9】
输出: 【5,5,5,5,3,3,3,6,6,6,2,2,4,4,1,7,10,8,9】
实现代码:
public static List<Integer> salaryfrequeny(int[] salaries)
{
Map<Integer, Long> map = Arrays.stream(salaries).boxed()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
Map<Integer, Integer> firstAppear = new HashMap<>();
for(int i = salaries.length - 1; i >= 0; --i) {
firstAppear.put(salaries[i],i);
}
Comparator<Integer> comparatorByFrequence = (n1, n2) -> {
if (map.get(n1) > map.get(n2)) {
return -1;
} else if (map.get(n1) < map.get(n2)) {
return 1;
} else {
return 0;