亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從二維數組中的所有值填充一維數組

從二維數組中的所有值填充一維數組

呼啦一陣風 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 關注
  • 194 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號