有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

与arraycopy等价的java Arraylist

我正在学习安卓,并试图制作一个涉及傅里叶变换的应用程序。我找到了一些示例代码,但它是用于double的,我想使用float和arraylist来代替。我更改了大部分代码,但不知道如何使用arraycopy更改代码行。代码如下:

public static void fourierTrans(ArrayList<Float> array) {

    FloatFFT_1D fftDo = new FloatFFT_1D(array.size());
    float[] fft = new float[array.size() * 2];
    System.arraycopy(array, 0, fft, 0, array.size());  //This line here
    fftDo.realForwardFull(fft);

    /*for(float d: fft) {
        System.out.println(d);
    }*/
}

有人知道带浮点数的ArrayList的arraycopy等价物吗


共 (2) 个答案

  1. # 1 楼答案

    可以使用复制构造函数

    ArrayList<Float> copy = new ArrayList<Float>(original);
    
  2. # 2 楼答案

    在这个简单的例子中,您可以使用以下习惯用法:

    ArrayList<Float> myCopy = new ArrayList<Float>(array);
    

    它将使用array参数中的所有值创建一个新的ArrayList<Float>

    现在来看一个更复杂的习惯用法,您想限制复制内容的索引和大小:

    ArrayList<Float> foo = new ArrayList<Float>();
    foo.addAll(Arrays.asList(1f,2f,3f,4f,5f));
    ArrayList<Float> bar = new ArrayList<Float>();
    // here it copies the values from the other list, 
    // but limits the size to the other list's size / 2 (rounded down)
    bar.addAll(foo.subList(0, foo.size() / 2));
    System.out.println(bar);
    

    输出

    [1.0, 2.0]