gpt4 book ai didi

java - 如何检测整数数组中的重复值并用它们在java中创建一个新值?

转载 作者:行者123 更新时间:2023-12-01 22:22:50 26 4
gpt4 key购买 nike

各位,如果您能帮助我解决这个问题,我将非常感激。关键是我有一个带有一堆数字的初始数组“a”,其中一些可以重复多次,其中一些可以重复一次。任务是创建一个由重复数字组成的新数组“b”。如果数组“a”中的任何数字重复多次 - 在数组“b”中,它只能反射(reflect)一次。新数组中的元素顺序应与初始数组中的相同。例如:

*initial array "a": 2 3 3 4 5 6 9 2 7 3 3  
new array "b": 2 3*

我决定每次都随机生成数组“a”,这没有任何困难,但在定义重复方面存在一些问题。我唯一做的就是找到所有重复的数字。我现在得到的结果是

*initial array "a": 2 3 3 4 5 6 9 2 7 3 3        
new array "b": 2 3 3 3*

我的代码:

import java.util.*;

public class ProcessingTool {

public static int[] arrayCreatingMethod(){

Random rand = new Random();

int myArrayDim = rand.nextInt(50);

int [] myArray = new int [myArrayDim];

for (int i=0; i<myArray.length;i++){

myArray[i] = (int)(Math.random()*(100));

}

return myArray;

}

public static int[] newArrayCreatingMethod(int[] a) {

int[] d = new int [a.length];

int k = 0;
int repetitions = 0;


for (int i = 0; i<a.length;i++){

int j = i;
int current = a[i];

while (j<a.length-1) {


if (current == a[j+1]) {

d[k] = current;
k++;
repetitions++;
break;

}


else {

k=k-1+1;

}

j++;

}

}

System.out.print("\n"+repetitions+"\n");

System.out.println("\nArray d: ");

for (int ww = 0; ww<d.length; ww++){

System.out.print(d[ww]+" ");

}

最佳答案

使用正确的类可以简化此操作:

import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;

import org.junit.Assert;

public class Reducing {

public int[] reduce(int[] input) {
Set<Integer> vals = new LinkedHashSet<Integer>();
Set<Integer> recurrences = new LinkedHashSet<Integer>();
for (Integer i : input) {
if (vals.contains(i)) {
recurrences.add(i);
}
vals.add(i);
}
vals.retainAll(recurrences);
int index = 0;
Integer[] recurs = new Integer[vals.size()];
for (Integer i : vals) {
recurs[index++] = i;
}
return recurs;
}

@org.junit.Test
public void test() {
Integer[] input = {2, 3, 3, 4, 5, 6, 9, 2, 7, 3, 3};
System.out.println(Arrays.toString(reduce(input)));
}
}

关于java - 如何检测整数数组中的重复值并用它们在java中创建一个新值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29389574/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com