对数组进行排序并找到重复的数字

湿婆
package array;

import java.util.Arrays;

public class learning_program1 {

    public static void main(String[] args) {

        int arr[]= {1,2,3,4,10,20,30,6,6,5,4,5,5,2};

        Arrays.sort(arr);
        for(int i = 0; i < arr.length; i++) 
        {   
            int count =0;
            int flag=0;
            for(int j=i+1; j<arr.length; j++)
            {
                while(arr[i] == arr[j])
                {
                    count++;
                    j++;
                    flag=1;
                }
                break;
            }
            if(flag==1)
            {
                System.out.println("the repeated values " + arr[i] + " is " +count);
            }


        }

    }
}

输出:

重复值 2 为 1

重复值 4 为 1

重复值 5 是 2

重复值 5 为 1

重复值 6 为 1

我的问题是我得到了输出但是 5 重复了两次

奥列格切瑞德尼克

您可以使用Stream. 首先,您必须arr按其值对给定中所有元素进行分组并对其进行计数。然后,过滤出现多次的元素。

public static Map<Integer, Integer> findDuplicates(int[] arr) {
    Map<Integer, Long> map = Arrays.stream(arr)
                                   .boxed()
                                   .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

    Map<Integer, Integer> res = new TreeMap<>();

    map.entrySet().stream()
       .filter(entry -> entry.getValue() > 1)
       .forEach(entry -> res.put(entry.getKey(), entry.getValue().intValue() - 1));

    return res;
}

在这种情况下,您的客户端代码将如下所示:

int arr[] = { 1, 2, 3, 4, 10, 20, 30, 6, 6, 5, 4, 5, 5, 2 };
Map<Integer, Integer> map = findDuplicates(arr);
map.forEach((key, count) -> System.out.println("the repeated values " + key + " is " + count));

输出:

the repeated values 2 is 1
the repeated values 4 is 1
the repeated values 5 is 2
the repeated values 6 is 1

PS如果您犹豫使用Stream,没有它很容易做到,只需依靠SetMap

public static Map<Integer, Integer> findDuplicates(int[] arr) {
    Set<Integer> values = new HashSet<>();
    Map<Integer, Integer> map = new TreeMap<>();

    for (int val : arr)
        if (!values.add(val))
            map.put(val, map.getOrDefault(val, 0) + 1);

    return map;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何找到在JavaScript中按降序对数字数组进行排序所需的最小交换次数

来自分类Dev

用PHP对数组进行排序-数字排序

来自分类Dev

在PHP中对数组进行排序-数字排序

来自分类Dev

对数组的重复值进行排序并使其成为键

来自分类Dev

Ruby根据多个条件对数字数组进行排序

来自分类Dev

对数字的字符串数组列表进行排序

来自分类Dev

用科学计数法对数字数组进行排序

来自分类Dev

字母数字在JavaScript中对数组进行排序

来自分类Dev

如何根据大小对数字数组列表进行排序?

来自分类Dev

将数组的指针传递给对数字进行排序的函数

来自分类Dev

在VBS中对数字数组进行排序

来自分类Dev

在Inno Setup中对数字数组进行排序

来自分类Dev

无法根据包含的数字对数组进行排序

来自分类Dev

根据值中的数字对数组进行排序

来自分类Dev

Java:对数字字符串数组进行排序

来自分类Dev

如何在C中对数字数组进行排序

来自分类Dev

使用javascript对数组进行数字排序

来自分类Dev

二维数组 - 按行对数字进行排序

来自分类Dev

对数字进行排序的算法

来自分类Dev

先对数字进行排序,然后对字符串数组中的字母进行排序

来自分类Dev

列对数组进行排序?

来自分类Dev

如何对数组进行排序

来自分类Dev

以升序对数组进行排序

来自分类Dev

无法对数组进行排序

来自分类Dev

无法在ARM中对数组排序。它已排序,但有数字缺失和重复

来自分类Dev

使用 lodash 按包含的数组对数组对象进行排序,并找到索引数组

来自分类Dev

根据数组内部数组中的EYE_SIZE对数组进行数字排序

来自分类Dev

通过对数组进行排序来确定数组是否具有重复元素

来自分类Dev

从类数组中删除重复项并按日期对数组进行排序

Related 相关文章

  1. 1

    如何找到在JavaScript中按降序对数字数组进行排序所需的最小交换次数

  2. 2

    用PHP对数组进行排序-数字排序

  3. 3

    在PHP中对数组进行排序-数字排序

  4. 4

    对数组的重复值进行排序并使其成为键

  5. 5

    Ruby根据多个条件对数字数组进行排序

  6. 6

    对数字的字符串数组列表进行排序

  7. 7

    用科学计数法对数字数组进行排序

  8. 8

    字母数字在JavaScript中对数组进行排序

  9. 9

    如何根据大小对数字数组列表进行排序?

  10. 10

    将数组的指针传递给对数字进行排序的函数

  11. 11

    在VBS中对数字数组进行排序

  12. 12

    在Inno Setup中对数字数组进行排序

  13. 13

    无法根据包含的数字对数组进行排序

  14. 14

    根据值中的数字对数组进行排序

  15. 15

    Java:对数字字符串数组进行排序

  16. 16

    如何在C中对数字数组进行排序

  17. 17

    使用javascript对数组进行数字排序

  18. 18

    二维数组 - 按行对数字进行排序

  19. 19

    对数字进行排序的算法

  20. 20

    先对数字进行排序,然后对字符串数组中的字母进行排序

  21. 21

    列对数组进行排序?

  22. 22

    如何对数组进行排序

  23. 23

    以升序对数组进行排序

  24. 24

    无法对数组进行排序

  25. 25

    无法在ARM中对数组排序。它已排序,但有数字缺失和重复

  26. 26

    使用 lodash 按包含的数组对数组对象进行排序,并找到索引数组

  27. 27

    根据数组内部数组中的EYE_SIZE对数组进行数字排序

  28. 28

    通过对数组进行排序来确定数组是否具有重复元素

  29. 29

    从类数组中删除重复项并按日期对数组进行排序

热门标签

归档