我试图弄清楚如何将一个数组的值传递给另一个数组。底部的图像是我可以用crimeArrayNumbers
简化为的数组。我试图采用每个索引,例如索引1,并将其分别存储在另一个类中的数组中。在这种情况下,数组在另一个类中为newUSCrimeArrays.population
。理想情况下,我正在尝试为每一列创建一个数组,以便可以操纵它们并进行数学和搜索操作。
我做了一些研究,认为Arrays.copyOfRange
或System.arraycopy()
可能有用。但是,我不确定现在如何正确实施。有更简单或更有效的方法吗?
try {
br = new BufferedReader(new FileReader(newUSCrimes.fileName));
while ((line = br.readLine()) != null && !line.isEmpty()) {
String[] crimesArray = line.split(csvComma);
long[] crimesArrayNumbers = new long[crimesArray.length];
//resting the index inside the main loop
index = 0;
for (int i = 0; i < crimesArrayNumbers.length; i++) {
try {
crimesArrayNumbers[index] = Long.parseLong(crimesArray[i]);
index++;
newUSCrimeArrays.population = Arrays.copyOfRange(crimesArrayNumbers, 0, 0);
} catch (IndexOutOfBoundsException | NumberFormatException ioob) {
}
} //end for loop
crimesArrayNumbers = Arrays.copyOf(crimesArrayNumbers, index);
System.out.println(Arrays.toString(crimesArrayNumbers));
}//end try
System.out.println();
System.out.println(Arrays.toString(newUSCrimeArrays.population));
} catch (FileNotFoundException e) {
} catch (IOException e) {
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
}
}
}
答案 0 :(得分:2)
如果我已经很好地理解了您要执行的操作,则希望将一些数据从文件导入到数组中,然后将该数组的内容复制到另一个数组中。在这种情况下,您可以使用Arrays.copyOf(source, length)
。这将复制source
数组,并创建一个具有给定长度的新数组。如果新长度小于旧长度,则该方法将截断,否则,它将用空值填充新部分。
因此,不要每次迭代都这样做:
newUSCrimeArrays.population = Arrays.copyOfRange(crimesArrayNumbers, 0, 0);
您可以在for
循环的末尾调用一个简单的命令:
newUSCrimeArrays.population = Arrays.copyOf(crimesArrayNumbers, crimesArrayNumbers.length);
为此,您可以使用clone()
,它是从Object
继承的方法。在原始数组(int,bool ...)中,这将对内容进行深层复制,这意味着将创建每个值的副本。
但是,您必须非常谨慎使用此方法,因为如果数组不包含基元,则该方法的行为将有所不同。