Java 计算数组中的重复值

Java 计算数组中的重复值,java,Java,我想写一个程序来计算数组中的重复项。如果两个数字相同,则代码有效。但是,如果有三个或更多相同的数字,则会出现错误。我该怎么做呢 public class Duplicate { public static void main(String[] args) { int[] list = new int[]{1,2,3,4,5,6,7,8,8,8,9,10}; int sum = 0; for(int count=1;

我想写一个程序来计算数组中的重复项。如果两个数字相同,则代码有效。但是,如果有三个或更多相同的数字,则会出现错误。我该怎么做呢

public class Duplicate
    {
      public static void main(String[] args)
      {
        int[] list = new int[]{1,2,3,4,5,6,7,8,8,8,9,10};

        int sum = 0;
        for(int count=1; count<list.length; count++)
        {
          if(list[count-1]==list[count])
          {
            sum = list[count-1] + list[count];
            System.out.println("Duplicate found: " + list[count] + " " + "Sum of the duplicate value is " +sum);
          }
        }
      }
    }
公共类重复
{
公共静态void main(字符串[]args)
{
int[]list=新的int[]{1,2,3,4,5,6,7,8,8,9,10};
整数和=0;

对于(int count=1;count,这将为您带来好处

public static void main(String[] args)
{
    int[] array = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 8, 8, 9, 10 };

    int sum = 0;
    for (int j = 0; j < array.length; j++)
    {
        for (int k = j + 1; k < array.length; k++) 
        {
            if (k != j && array[k] == array[j])
            {
                sum = sum + array[k];
                System.out.println("Duplicate found: " + array[k] + " " + "Sum of the duplicate value is " + sum);
            }
        }
    }
}
publicstaticvoidmain(字符串[]args)
{
int[]数组=新的int[]{1,2,3,4,5,6,7,8,8,9,10};
整数和=0;
对于(int j=0;j

希望能有所帮助!

以下是一种Java-8风格的功能性方法:

int[]数组=新的int[]{1,2,3,4,5,6,7,8,8,8,9,10};
//从数据创建流
IntStream.of(数组)
.boxed()
//将值分组到映射中
.collect(收集器.groupingBy(i->i))
//过滤掉组中只有1个元素的贴图值
.entrySet()
.stream()
.filter(e->e.getValue().size()>1)
//打印剩余组的总和
.forEach(e->{
System.out.println(
找到的重复项:“+e.getKey()+
它们的总和是:“+e.getValue()
.stream()
.collect(collector.summingit(i->i));
});
对于您的输入,这将产生:

为:8找到重复项,其总和为:24
这个解决方案的好处在于它同样适用于无序的
int[]

int[]数组=新的int[]{1,10,3,2,3,4,5,8,6,7,8,8,9,10};
输出将是

为:3找到重复项,其总和为:6
为:8找到重复项,其总和为:32
发现的重复项为:10,其总和为:20

如果您不介意使用Javaslang,一个Java 8的集合库,这里有一个更简洁的解决方案:

int[]数组=新的int[]{1,2,3,4,5,6,7,8,8,8,9,10};
//javaslang.collection.List
全部列表(数组)
.groupBy(i->i)
.entrySet()
.filter(e->e.value.length()>1)
.forEach(e->{
System.out.println(
“为:”+e.key找到重复项+
它们的总和是:“+e.value.sum());
});
正如预期的那样,这将导致:

为:8找到重复项,其总和为:24
同样,卢卡斯的回答是

int[]数组=新的int[]{1,10,3,2,3,4,5,8,6,7,8,8,9,10};
它屈服于

为:10找到重复项,其总和为:20
为:8找到重复项,其总和为:32
为:3找到重复项,其总和为:6

请注意,此代码使用即将发布的Javaslang 2.0.0-SNAPSHOT运行。

什么是“计算重复数”?输入数组是否始终排序?您期望的输出是什么?数组将始终排序??