Java Arraylist到Array

Rya*_*les 2 java arrays

我需要使用一个方法编写一个方法,ArrayList但我无法弄清楚如何做到这一点.

我只是使用一个数组就能做到这一点,我想知道是否有一种简单的方法来改变它,以便它确实实现了ArrayList.

这是我目前的代码:

//public ArrayList<Integer> getPixelsInWindow(int wSize, int x, int y) {
//ArrayList<Integer> values = new ArrayList<Integer>();

public int[] getPixelsInWindow(int wSize, int x, int y) {

    int [] values;

    int xMin = 0;
    int xMax = 0;
    int yMin = 0;
    int yMax = 0;

    xMin = x - (wSize / 2);
    if (xMin < 0)
        xMin = 0;
    yMin = y - (wSize / 2);
    if (yMin < 0)
        yMin = 0;   
    xMax = x + (wSize / 2);
    if (xMax >= rowN)
        xMax = rowN - 1;
    yMax = y + (wSize / 2);
    if (yMax >= columnN)
        yMax = columnN - 1;
    int differenceX = xMax-xMin;
    int differenceY = yMax-yMin;

    values = new int[(differenceX + 1)  * (differenceY + 1)];


    int j = 0;
    for(int i = xMin;i < xMax + 1;i++){
        for(int k = yMin;k < yMax + 1;k++){

            values[j] = img[i][k];
            if(j == 0){

            }
            j++;
        }
    }

    return values;
}
Run Code Online (Sandbox Code Playgroud)

Jac*_*erk 6

这很快就完成了,没有经过测试......但是我知道这个想法是存在的:

...
List<Integer> values = new ArrayList<Integer>();

int j = 0;
for(int i = xMin;i < xMax + 1;i++){
    for(int k = yMin;k < yMax + 1;k++){

        values.add(new Integer(img[i][k]));
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 而不是"new Integer"我将使用Integer.valueOf(...),这是根据SUN实践(在内存管理方面更好)的首选方式,或者让自动装箱为你做.此外,不再需要变量j.但仍然是+1 (4认同)