为了账号安全,请及时绑定邮箱和手机立即绑定

从二维数组中的所有值填充一维数组

从二维数组中的所有值填充一维数组

呼啦一阵风 2022-07-14 17:02:03
假设我有一个带有 int 值的二维数组,我想用二维数组中的所有 int 值填充一个一维数组,我该怎么做呢?这是我尝试过的,但是出了点问题,我不知道是什么..int[][] twoDimensionalArray = {{5, 2, 3, 1},                               {4, 2, 6, 9},                               {8, 9, 1, 8}};int[] oneDimensionalArray = new int[twoDimensionalArray.length * twoDimensionalArray.length];for (int i = 0; i < twoDimensionalArray.length; i++) {    for (int j = 0; j < twoDimensionalArray.length; j++) {      oneDimensionalArray[i] = twoDimensionalArray[i][j];     }}谢谢!
查看完整描述

4 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

我可以提出这样的建议,


String[][] my2Darr = {{5, 2, 3, 1},

                      {4, 2, 6, 9},

                      {8, 9, 1, 8}};

    List<String> list = new ArrayList<>();

    for(int i = 0; i < my2Darr.length; i++) {

        list.addAll(Arrays.asList(my2Darr[i])); // java.util.Arrays

    }

    String[] my1Darr = new String[list.size()];

    my1Darr = list.toArray(my1Darr);

爪哇 8:


int[][] 2darr = {{5, 2, 3, 1},

               {4, 2, 6, 9},

               {8, 9, 1, 8}};

int[] 1darr = Stream.of(2darr ).flatMapToInt(IntStream::of).toArray();

System.out.println(Arrays.toString(1darr ));


查看完整回答
反对 回复 2022-07-14
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

int[][] twoDimensionalArray = {{5, 2, 3, 1},

                               {4, 2, 6, 9},

                               {8, 9, 1, 8}};

int[] oneDimensionalArray = new int[twoDimensionalArray.length * twoDimensionalArray.length];

for (int i = 0; i < twoDimensionalArray.length; i++) {

    for (int j = 0; j < twoDimensionalArray[0].length; j++) {

      oneDimensionalArray[i] = twoDimensionalArray[i][j];

     }

}

您的解决方案几乎是正确的。您必须更正twoDimensionalArray.length为twoDimensionalArray[0].length. 因为你想水平和垂直迭代。如果您在 twoDimensionalArray.length 上迭代 2 次,您将迭代 2 倍水平轴的长度。


查看完整回答
反对 回复 2022-07-14
?
函数式编程

TA贡献1807条经验 获得超9个赞

您可以使用它,它用于System.arraycopy()将内部数组复制到结果中:


public static int[] flatten(int[][] input) {

    int length = input.length;

    if(length == 0) return new int[0];


    int[] output = new int[length * input[0].length];

    for(int i = 0; i < length; i++) {

       int[] inner = input[i];

       // 1. Parameter: the source to copy from

       // 2. Parameter: the starting index from source

       // 3. Parameter: the destionation to copy to

       // 4. Parameter: the starting index from destination

       // 5. Parameter: the amount of elements to copy

       System.arraycopy(inner, 0, output, i * length, inner.length);

    }

    return output;

}


查看完整回答
反对 回复 2022-07-14
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

您可以使用 来执行此操作stream,例如:


int[][] twoDimensionalArray = {{5, 2, 3, 1},

        {4, 2, 6, 9},

        {8, 9, 1, 8}};


int[] oneDimensionalArray = Arrays.stream(twoDimensionalArray)

    .flatMapToInt(e -> Arrays.stream(e))

    .toArray();


System.out.println(Arrays.toString(oneDimensionalArray));


查看完整回答
反对 回复 2022-07-14
  • 4 回答
  • 0 关注
  • 144 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信