Blog coding and discussion of coding about JavaScript, PHP, CGI, general web building etc.

Wednesday, February 10, 2016

Creating 2d array from arraylist

Creating 2d array from arraylist


I have a constant 2d int array which is declared as:

int blocked[][] = new int[][] { { 0, 4 }, { 2, 2 }, { 3, 1 }, { 3, 3 } };  

However, what I would like to do is to generate the exact array dynamically. So I created an arraylist where I add each integer separately, 0,4,2,3...N. Then I use for loop to go through to arraylist and create a 2d array. But somehow I just can't get it to work. I can't figure out where I'm doing wrong.

        ArrayList blocklist = new ArrayList();          int blocked[][];        blocklist.add(0);      blocklist.add(4);      blocklist.add(2);      blocklist.add(2);      blocklist.add(3);      blocklist.add(1);      blocklist.add(3);      blocklist.add(3);        blocked = new int[blocklist.size()][2];          for(int i=0; i+2 < blocklist.size(); i++){          blocked[i][0] = blocklist.get(i);          blocked[i][1] = blocklist.get(i+1);      }          for(int i=0;i

When I do Arrays.deepToString(blocked); I get [[0, 0], [4, 4], [2, 2], [2, 2], [3, 3], [1, 1], [3, 3], [3, 3]] but it should be [[0, 4], [2, 2], [3, 1], [3, 3]]

Answer by James Lloyd for Creating 2d array from arraylist


Try this:

int j = 0    for (int i=0; i < blocklist.size(); i++) {      blocked[i][0] = blocklist.get(j);      blocked[i][1] = blocklist.get(j+1);        j+=2;  }  

Answer by user1057604 for Creating 2d array from arraylist


Your issue is in the for loop. i+2 increments i by 2 on each iteration of the loop.

It should be:

for(int i=0; i < blocklist.size(); i++){      blocked[i][0] = blocklist.get(i);      blocked[i][1] = blocklist.get(i);  }  

Answer by Tipu Sultan for Creating 2d array from arraylist


ArrayList blocklist = new ArrayList();            int blocked[][];            blocklist.add(0);          blocklist.add(4);          blocklist.add(2);          blocklist.add(2);          blocklist.add(3);          blocklist.add(1);          blocklist.add(3);          blocklist.add(3);                blocked = new int[(blocklist.size()/2)][2];            for (int i = -1, j = 0,k=0; k < blocklist.size(); j++) {              blocked[j][0] = blocklist.get(++i);              blocked[j][1] = blocklist.get(++i);              k+=2;          }            for (int i = 0; i <(blocklist.size()/2);i++) {              for (int j = 0; j < 2; ++j) {                  System.out.print(blocked[i][j]);              }          }        System.out.println();      String deepToString = Arrays.deepToString(blocked);      System.out.println("string: "+deepToString);    output:   04223133  string: [[0, 4], [2, 2], [3, 1], [3, 3]]  

Answer by Akhil for Creating 2d array from arraylist


solved

    blocked = new int[blocklist.size()][2];    for(int i=0; i < blocklist.size(); i++){  blocked[i][0] = blocklist.get(i);  blocked[i][1] = blocklist.get(i);  

}

for(int i=0;i

Answer by Pankaj Nimgade for Creating 2d array from arraylist


this code changes int[][] to ArrayList<>Integer> and vice versa irrespective of length, the code is also available on github

import java.util.ArrayList;  import java.util.Iterator;    /**   * Created by Pankaj Nimgade on 10-02-2016.   */  public class TestDriveInteger {        public static void main(String[] args) {          int blocked[][] = new int[][]{{0, 4}, {2, 2}, {3, 1}, {3, 3}};          ArrayList list = toArrayList(blocked);            System.out.println("########### Converted integer List ##############");            for (Integer integer : list) {              System.out.print(integer + " ");          }            int[][] source = toIntegerArray(list);            System.out.println("########### Converted int array ##############");          for (int i = 0; i < source.length; i++) {              for (int j = 0; j < source[i].length; j++) {                  System.out.print(source[i][j]+" ");              }          }          System.out.println(source.length);      }        private static int[][] toIntegerArray(ArrayList arrayList) {          int[][] block = new int[arrayList.size() / 2][2];          System.out.println(block.length);          if ((arrayList.size() % 2) == 0) {               int count = arrayList.size()/2;                Iterator integerIterator = arrayList.iterator();                for (int i = 0; i < count; i++) {                  block[i][0] = integerIterator.next();                  block[i][1] = integerIterator.next();              }            } else {              System.out.println("it is not a even size");          }            return block;      }        private static ArrayList toArrayList(int[][] integerArray) {          ArrayList integerArrayList = new ArrayList<>();          for (int i = 0; i < integerArray.length; i++) {              for (int j = 0; j < integerArray[i].length; j++) {                  integerArrayList.add(integerArray[i][j]);              }          }          return integerArrayList;      }  }  

output

########### Converted integer List ##############  0 4 2 2 3 1 3 3 4  ########### Converted int array ##############  0 4 2 2 3 1 3 3 4  

Answer by Akbar Begimqulov for Creating 2d array from arraylist


Change your code like this:

import java.util.ArrayList;    public class Simple {    public static void main(String[] args) {        ArrayList blocklist = new ArrayList();        blocklist.add(0);      blocklist.add(4);      blocklist.add(2);      blocklist.add(2);      blocklist.add(3);      blocklist.add(1);      blocklist.add(3);      blocklist.add(3);        int length = blocklist.size() / 2;        int blocked[][];      blocked = new int[ length ][2];        for(int i=0, j=0; i < length; i++) {          blocked[i][0] = blocklist.get(j++);          blocked[i][1] = blocklist.get(j++);      }        for(int i=0;i

}

Answer by Adam Kortylewicz for Creating 2d array from arraylist


Try this one:

   for(int i=0,j=0; j < (blocklist.size()/2); i+=2,j++){          blocked[j][0] = blocklist.get(i);          blocked[j][1] = blocklist.get(i+1);     }     for(int i=0;i

Working for me :)


Fatal error: Call to a member function getElementsByTagName() on a non-object in D:\XAMPP INSTALLASTION\xampp\htdocs\endunpratama9i\www-stackoverflow-info-proses.php on line 72

0 comments:

Post a Comment

Popular Posts

Powered by Blogger.