How to combine a 2D array into a 1D array?

I find it difficult to determine how to combine a multidimensional array into one array.

Here is my code:

        String[][] multiArray = {{"1","2","3"},{"4","5","6"}};
    String[] singleArray = new String[6];

    for(int i=0; i<singleArray.length; i++)
    {
        for(int x=0; x<multiArray.length; x++)
        {
            for(int z=0; z<multiArray[x].length;z++)
            {
                //for(int i=0; i<singleArray.length; i++)
                //{
                singleArray[i] = multiArray[x][z];  
                //}
            }
        }
    }


    for(String temp : singleArray){
        System.out.println(temp);
    }

RESULT

6  
6  
6  
6  
6  
6  

Why? How can I put all numbers in one array? Many thanks!

+4
source share
7 answers
String[][] multiArray = {{"1","2","3"},{"4","5","6"}};
String[] strings = Arrays.stream(multiArray)
        .flatMap(Arrays::stream)
        .toArray(size -> new String[size]);
+4
source

You need to increase the index of a 1-dimensional array for each record in multidimensional:

String[][] multiArray = {{"1","2","3"},{"4","5","6"}};
String[] singleArray = new String[6];

for (int x = 0, i = 0; x < multiArray.length; x++) {
    for (int z = 0; z < multiArray[x].length; z++) {
        singleArray[i++] = multiArray[x][z];  
    }
}

Note that it is iinitialized in the outer loop and incremented when a value is assigned in a 1-dimensional array.

Another equivalent option would be an increase iin the inner loop:

for (int x = 0, i = 0; x < multiArray.length; x++) {
    for (int z = 0; z < multiArray[x].length; z++, i++) {
        singleArray[i] = multiArray[x][z];  
    }
}
+3
source

?

    String[][] multiArray = {{"1","2","3"},{"4","5","6"}};

    List<String> result = new ArrayList<>();
    for(String[] firstLevel : multiArray){
        for(String secondLevel : firstLevel){
            result.add(secondLevel);
        }
    }
    return result.toArray();
+1

, . , .
: , , .
, , .

String[][] multiArray = { { "1", "2", "3" }, { "4", "5", "6" } };
String[] singleArray = new String[multiArray[0].length + multiArray[1].length];

int i = 0;
for (int j = 0; j < multiArray.length; j++) { // first dimension [j]
    for (int k = 0; k < multiArray[j].length; k++) {  // second dimension [k]
      singleArray[i] = multiArray[j][k]; // here you get [j][k] 
      i++; // you go to next position of destination array  
           // when you had an entry
    }   
}
+1

. , . .

. :

String[][] multiArray = {{"1","2","3"},{"4","5","6"}};
String[] singleArray = new String[6];

int counter=0;
for(int x=0; x<multiArray.length; x++)
{
    for(int z=0; z<multiArray[x].length;z++)
    {
        singleArray[counter] = multiArray[x][z]; 
        counter++: 
    }
}



for(String temp : singleArray){
    System.out.println(temp);
}
+1

, .

  int i=0;
  while (i<singleArray.length)
   {
    for(int x=0; x<multiArray.length; x++)
    {
        for(int z=0; z<multiArray[x].length;z++)
        {


            singleArray[i++] = multiArray[x][z];  

        }
    }
}


for(String temp : singleArray){
    System.out.println(temp);
}
+1

, i, singleArray, . , , i, single[i] 1 6 . 1-D , .. 6. , i postfix increment , singleArray. .

int i=0; //starting index
for(int x=0; x<multiArray.length; x++)
{
    for(int z=0; z<multiArray[x].length;z++)
    {
        singleArray[i++] = multiArray[x][z];
        /* i value is changed every time a value is added to
            singleArray */
    }
}
+1

Source: https://habr.com/ru/post/1659487/


All Articles