如何在java中计算数组中的重复元素

如何在java中计算数组中的重复元素,java,Java,我有一个整数数组,比如=3,1,2,3,1;我只想数一数这个数组有多少个副本。例如,此阵列现在有4个重复项。输入是数组,输出是重复元素的数量。 是否有任何方法或类用于它?你能帮我实现我自己的目标吗? 注意:我不是在寻找指定元素的出现次数。我只是想知道这个数组到底有多少个副本。例如,我说上面提到的数组有4个副本。其中2个是“3”,2个是“1” 最简单的方法是使用地图。数组被转换为整数流。groupingBy收集器使用整数作为映射的键。计数收集器对这些整数的数量或出现次数进行计数 int[

我有一个整数数组,比如=3,1,2,3,1;我只想数一数这个数组有多少个副本。例如,此阵列现在有4个重复项。输入是数组,输出是重复元素的数量。 是否有任何方法或类用于它?你能帮我实现我自己的目标吗?
注意:我不是在寻找指定元素的出现次数。我只是想知道这个数组到底有多少个副本。例如,我说上面提到的数组有4个副本。其中2个是“3”,2个是“1”

最简单的方法是使用地图。数组被转换为整数流。
groupingBy
收集器使用整数作为映射的键。
计数
收集器对这些整数的数量或出现次数进行计数


    int[] nums = { 1, 20, 2, 3, 1, 2, 3, 2, 221, 20 };

    Map<Integer, Long> dups = Arrays.stream(nums)
            .boxed()
            .collect(Collectors.groupingBy(a -> a, Collectors.counting()));

要计算总重复数,请获取地图并将这些值相加>1

    long sum = dups.values()
                  .stream()
                  .filter(a-> a > 1)
                  .count();

    System.out.println("There are " + sum + " duplicates in all");


最简单的方法是使用地图。数组被转换为整数流。
groupingBy
收集器使用整数作为映射的键。
计数
收集器对这些整数的数量或出现次数进行计数


    int[] nums = { 1, 20, 2, 3, 1, 2, 3, 2, 221, 20 };

    Map<Integer, Long> dups = Arrays.stream(nums)
            .boxed()
            .collect(Collectors.groupingBy(a -> a, Collectors.counting()));

要计算总重复数,请获取地图并将这些值相加>1

    long sum = dups.values()
                  .stream()
                  .filter(a-> a > 1)
                  .count();

    System.out.println("There are " + sum + " duplicates in all");


地图可以用来存储数字和它们出现的次数:

Map<Integer,Integer> map = new HashMap<>();
for(int i: numbers) { //suppose you have the numbers in 'numbers' array
   if(map.containsKey(i) { //this number is in the map already
      map.put(i, map.get(i)+1);
   } else { //we didnt see this number before
      map.put(i, 1);
   }
}

//now we loop the map to sum the repeating numbers
int sum = 0;
for(int amount: map.values()) {
   if(amount > 1) sum += amount;
}
Map Map=newhashmap();
对于(inti:numbers){//假设您在'numbers'数组中有数字
如果(map.containsKey(i){//这个数字已经在地图上了
map.put(i,map.get(i)+1);
}否则{//我们以前没有看到这个数字
图.put(i,1);
}
}
//现在,我们循环映射以对重复的数字求和
整数和=0;
对于(整数金额:map.values()){
如果(金额>1)总和+=金额;
}

此方法的一个优点是,您可以准确地知道数组中每个数字的数量。以后可能需要该信息。

可以使用地图存储数字及其出现的次数:

Map<Integer,Integer> map = new HashMap<>();
for(int i: numbers) { //suppose you have the numbers in 'numbers' array
   if(map.containsKey(i) { //this number is in the map already
      map.put(i, map.get(i)+1);
   } else { //we didnt see this number before
      map.put(i, 1);
   }
}

//now we loop the map to sum the repeating numbers
int sum = 0;
for(int amount: map.values()) {
   if(amount > 1) sum += amount;
}
Map Map=newhashmap();
对于(inti:numbers){//假设您在'numbers'数组中有数字
如果(map.containsKey(i){//这个数字已经在地图上了
map.put(i,map.get(i)+1);
}否则{//我们以前没有看到这个数字
图.put(i,1);
}
}
//现在,我们循环映射以对重复的数字求和
整数和=0;
对于(整数金额:map.values()){
如果(金额>1)总和+=金额;
}

这种方法的一个优点是,你可以准确地知道数组中每个数字的数量。你以后可能需要这些信息。

重复?@GovindaSakhare不,不是。我不想计算每个元素重复多少次并打印出来。我只需要重复所有元素。例如,在帖子中,我说我们有4个重复。2其中3个是“3”,2个是“1”。输出应该是什么?@GovindaSakhare是一个整数。重复的?@GovindaSakhare不是。我不想计算每个元素重复多少次并打印出来。我只需要所有元素的重复。例如,我在帖子中说我们有4个重复。其中2个是“3”,2个是“1”输出应该是什么?@GovindaSakhare一个整数。很好的解决方案。我做了同样的事情,只是用good old for循环。很好的解决方案。我做了同样的事情,只是用good old for循环。你好,谢谢你的帮助。但我不是在寻找所有元素的出现次数。我只是想知道数组是否有重复值,有多少重复的v我编辑了第一篇文章too@Semiron就是这样。重复元素的总数将在sum变量中。如果sum为0,则表示数组中没有重复元素。您解决了我的问题,伙计。谢谢。+1投票并接受了回答您好,谢谢您的帮助。但我不查找重复元素的出现次数所有元素。我只想知道数组是否有重复值,它有多少重复值。我编辑了第一篇文章too@Semiron就是这样。重复元素的总数将在sum变量中。如果sum为0,则表示数组中没有重复元素。您解决了我的问题,伙计。谢谢。+1投票和acc被接受的答案