按数组中元素出现的次数排序

来源:互联网 发布:陈子豪的淘宝店 编辑:程序博客网 时间:2024/05/21 19:45

//按数组中元素出现的次数排序
     private int[] sortArr(int[] arr) {
        int max = 0;
        Set<Object> result = new HashSet<Object>();
        Map<Object, Integer> mp = new HashMap<Object, Integer>();
        for (int i = 0; i < arr.length; i++) {
            Integer num = mp.put(arr[i], 1);
            if (num != null) {
                mp.put(arr[i], num + 1);
                if (num > max) {
                    result.clear();
                    result.add(arr[i]);
                    max = num;
                } else if (num == max) {
                    result.add(arr[i]);
                }
            }
        }
        Set set = mp.entrySet();
        Map.Entry[] entries = (Map.Entry[]) set.toArray(new Map.Entry[set.size()]);

        Arrays.sort(entries, new Comparator() {
            public int compare(Object arg0, Object arg1) {
                Long key1 = Long.valueOf(((Map.Entry) arg0).getValue().toString());
                Long key2 = Long.valueOf(((Map.Entry) arg1).getValue().toString());
                return key1.compareTo(key2);
            }
        });

        int[] ids = new int[entries.length];

        for (int i = entries.length - 1; i >= 0; i--) {
            Map.Entry entry = entries[i];
            ids[i] = Integer.parseInt(entry.getKey().toString());
        }
        return ids;
    }

原创粉丝点击