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