Java-将数组值传递给第二个数组

时间:2018-10-14 19:18:09

标签: java arrays

我试图弄清楚如何将一个数组的值传递给另一个数组。底部的图像是我可以用crimeArrayNumbers简化为的数组。我试图采用每个索引,例如索引1,并将其分别存储在另一个类中的数组中。在这种情况下,数组在另一个类中为newUSCrimeArrays.population。理想情况下,我正在尝试为每一列创建一个数组,以便可以操纵它们并进行数学和搜索操作。

我做了一些研究,认为Arrays.copyOfRangeSystem.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) {
        }
    }
}

Array

1 个答案:

答案 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 ...)中,这将对内容进行深层复制,这意味着将创建每个值的副本。 但是,您必须非常谨慎使用此方法,因为如果数组不包含基元,则该方法的行为将有所不同。