高分悬赏!Java语言数组如何将数组中的相同数字合并,并且输出重复数量最多的5个数字

高分悬赏!Java语言数组如何将数组中的相同数字合并,并且输出重复数量最多的5个数字
思路我会,就是代码写不出来

public static void main(String[] args) {
        int[] aArr = {1, 2, 3, 4, 5, 6, 4, 5,5, 6, 7, 8, 6, 4, 3, 3, 4, 5, 6, 4, 4, 5, 6, 7, 9, 8, 7, 6, 5, 4, 3};
        //去重
        int[] ints = Arrays.stream(aArr).distinct().toArray();
        for (int anInt : ints) {
            System.out.print(anInt + ",");
        }
        //统计次数
        Map<Integer, Integer> map = new HashMap<>();
        for (int i : aArr) {
            Integer count = map.get(i);
            if (count != null) {
                ++count;
                map.put(i, count);
            } else {
                map.put(i, 1);
            }
        }
        //排序只取次数最多的5个
        List<Map.Entry<Integer, Integer>> collect = map.entrySet().stream()
                .sorted((o1, o2) -> o2.getValue().compareTo(o1.getValue())).limit(5).collect(Collectors.toList());
        for (Map.Entry<Integer, Integer> entry : collect) {
            System.out.println("数字:" + entry.getKey() + " 数量:" + entry.getValue());
        }
    }
    Integer[] aArr = {1, 2, 3, 4, 5, 6, 4, 5, 5, 6, 7, 8, 6, 4, 3, 3, 4, 5, 6, 4, 4, 5, 6, 7, 9, 8, 7, 6, 5, 4, 3};
    Set<Integer> collect = Stream.of(aArr)
            .collect(Collectors.toMap(i -> i, i -> 1, (a, s) -> a + s))
            .entrySet().stream()
            .sorted((o1, o2) -> o2.getValue() - o1.getValue())
            .limit(5)
            .map(Map.Entry::getKey)
            .collect(Collectors.toSet());
    System.out.println("collect = " + collect);