• Status: Solved
• Priority: Medium
• Security: Public
• Views: 189

# Create an array dynamically

My Java code will prompt users to input some data, each piece of this data will need to have an array attached to it. Problem is I will not be privy to how many pieces of data will be entered, it could be just one or 10,000. So I won't know how many arrays or array lists I will need. I want to create the arrays as I need them. In other words I do not want to declare a bunch of arrays prior to knowing how many I need.
0
CrazyOne
• 3
• 3
1 Solution

Commented:
You can create arrays or array lists dynamically.

Here's an example of having a list of arrays, where the arrays have a random size from 0-99 elements.  In your example you'd probably want to decide on this size based on what the user inputs instead.

Then it collects up the arrays in a list, so you can find them again later.

``````		List<Integer[]> listOfArrays = new ArrayList<Integer[]>() ;

boolean done = false ;

while (!done) {
int arraySize = (int)Math.round(Math.random() * 100) ;
Integer[] myNewArray = new Integer[arraySize] ;

if (listOfArrays.size() > 10)
done = true ;
}
``````

Does that make sense?

Doug
0

Author Commented:
Um, thanks. I am not looking for sizing the array, I am looking to create arrays on the fly. For instances lets say per the users input I will need twenty arrays and another may need 40 arrays. I would like to be able to create the arrays dynamically in code. Something like:

``````   for(int i = 0; i < HowManyArrays; i++) {
int Di = new int[size];
//where Di means the letter D
//and the value of i
}
``````
0

Commented:
I am looking to create arrays on the fly

Yes I understand that.  The code I posted shows you how to dynamically create 10 arrays in a loop.

If they are all the same size, then just set the "arraySize" variable to a constant, instead of the random value I posted.

I used a while loop in case you don't know at the start how many arrays to create.  If you know that at the start, then a for loop (like you posted) is simpler.

Doug
0

Author Commented:
OK . Excuse my ignorance it has been 10 years or more since I sat down, and did some real hard-coding for an app, but how do I access the various newly created arrays. In your code there are 10 arrays, lets say I need to add or extract info from the 5th array how do I do it. Thanks

P.S. If you like could I ask this in a separate question, so as to get you more point, since this is an add to my original question.
0

Commented:
OK here's a somewhat simplified version of my original code - removing the while loop and the varying array size and then looking up the 5th element in the list and then adding an extra element as the 5th element.

``````               List<Integer[]> listOfArrays = new ArrayList<Integer[]>() ;

for (int i = 0 ; i < howManyArrays ; i++) {
int arraySize = 10 ;
Integer[] myNewArray = new Integer[arraySize] ;
}

// index 4 is the 5th element since we start at 0
Integer[] fifthArray = listOfArrays.get(4) ;

// Add an extra array in at the 5th position (i.e. index 4)
Integer[] addArray = new Integer[10] ;
``````
0

Author Commented:
Thanks
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.