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运行。什么是“计算重复数”?输入数组是否始终排序?您期望的输出是什么?数组将始终排序??