首页 > 解决方案 > 结合二维数组和一维数组

问题描述

我有 2 个数组,一个是 a int[][] pixelYArray,另一个是 a int[] pixelXArray。我无法将图像的全宽和全高设置为长度,因为这些像素已经被过滤掉了。例如,颜色为黄色,这些是剩余的像素,我想创建一个这样的数组或对象:

 [
  {
    "pixel x" : 1,
    "pixel y" : [
      1, 2, 3, 100, 101, 102
    ]
  },{
    "pixel x" : 3,
    "pixel y" : [
      1, 2, 32, 100, 101, 102
    ]
  },
]

文本"pixel x""pixel y"是可选的,如果它可以更容易地创建数组,则不需要。在 Javascript 中,您可以通过执行以下操作来实现它

let array = [];
for(int i=0;i < pixelYArray.length;i++){
    let tmpArr = [];
    for(int j=0;j < pixelYArray[i].length; j++){
        tmpArr.push(pixelYArray[i][j]);
    }
    array.push({
        "pixel x" : pixelXArray[i],
        "pixel y" : tmpArr
    });
    /* or
    array.push({
        pixelXArray[i],
        tmpArr
    }); */
}

只是如何在 Java 中实现这一点,因为您无法创建这样的对象或将它们推送到数组中。我有一个这样的for循环:

   for(int i=0;i < pixelYArray.length;i++){
        System.out.println("pixel x: " + pixelXArray[i] + " pixel y: ");
        for(int j=0;j < pixelYArray[i].length; j++){
            System.out.print(pixelYArray[i][j] + "\t" );
        }
        System.out.println("\nEnd of Pixels for row \n");
    }

是什么给出了这样的结果以及更多层的 X 像素和 y 像素 ofc作为循环结果的 X 和 Y 像素行

标签: javaarraysmultidimensional-array

解决方案


我认为这将解决您的问题:

public class Test {
    public static void main(String[] args) {
        List<Color> list = new ArrayList<>();
        Color c = new Color();
        c.pixel_x = 1;
        c.pixel_y.add(1);
        c.pixel_y.add(2);
        c.pixel_y.add(3);
        c.pixel_y.add(100);
        c.pixel_y.add(101);
        c.pixel_y.add(102);

        list.add(c);

        System.out.println(c);
    }
}
class Color {
    public int pixel_x;
    public List<Integer> pixel_y;

    public Color() {
        pixel_x = 0;
        pixel_y = new ArrayList<>();
    }

    @Override
    public String toString() {
        return pixel_x + " " + pixel_y;
    }
}

首先,您创建一个Color包含pixel_x类型Integerpixel_y类型的对象,List<Integer>然后在您的主目录中,每次创建Color实例时,将其添加到List<Color>.


推荐阅读