LinkedMap的使用

    xiaoxiao2021-03-25  135

    输入一组数,输出是按每个出现的频率,比如1,3,3,4,5,9,9,9,3,3,输出为3,3,3,3,9,9,9,1,4,5如果频率一样就按原顺序输出。

    package com.lyb.array; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.LinkedHashMap; import java.util.Map; public class SortArray {   public void sortfrequency(int arr[]){ LinkedHashMap<Integer, Integer> map = new LinkedHashMap<Integer, Integer>(); for (int i = 0; i < arr.length; i++) { if (map.get(arr[i]) == null) map.put(arr[i], 1); else map.put(arr[i], map.get(arr[i]) + 1); } //上面的for循环是统计每个数字出现的频率(次数) ArrayList<Map.Entry<Integer, Integer>> list = new ArrayList<Map.Entry<Integer, Integer>>(map.entrySet()); Collections.sort(list, new Comparator<Map.Entry<Integer, Integer>>() { // 降序排序 public int compare(Map.Entry<Integer, Integer> m1, Map.Entry<Integer, Integer> m2) { return m2.getValue().compareTo(m1.getValue()); //根据出现的次数排序 } }); System.out.print( "["); for (Map.Entry<Integer, Integer> entry : list) { //双重循环,第一重键值对,第二重根据值。值是多少就循环多少 for (int i = 0; i < entry.getValue(); i++) { System.out.print(entry.getKey() + " "); } } System.out.print( "]");   } }

    转载请注明原文地址: https://ju.6miu.com/read-24444.html

    最新回复(0)