How do you copy multidimension array from Vector to Object[][] ?

R

Ronin

I have absolutely no idea how to do this. I inserted a [] array into a
vector, which then ofcourse became a [][] array, but now can't get it
out back to a Object[][].


Vector vector = new Vector();
vector.addElement(new Object[]{"A","B"});
vector.addElement(new Object[]{"C","D"});

Object obj[] = new Object[m.size()]; //this works so far

m.copyInto((Object[]) obj); //this works so far
Object[][] attribute = (Object[][]) obj; //BANG!!!

why the hell wont it work?

for now I'll just use the crappy m.elementAt() function and cast to [].
All this casting in a loop eats CPU though.
 
C

Chris

Ronin said:
I have absolutely no idea how to do this. I inserted a [] array into a
vector, which then ofcourse became a [][] array, but now can't get it
out back to a Object[][].


Vector vector = new Vector();
vector.addElement(new Object[]{"A","B"});
vector.addElement(new Object[]{"C","D"});

Object obj[] = new Object[m.size()]; //this works so far

m.copyInto((Object[]) obj); //this works so far
Object[][] attribute = (Object[][]) obj; //BANG!!!

why the hell wont it work?

for now I'll just use the crappy m.elementAt() function and cast to [].
All this casting in a loop eats CPU though.

Some random, maybe not-useful ideas:

-- Don't use Vector. Use ArrayList.

-- ArrayList.toArray() is helpful

-- One of the problems with the Collection classes is that you have to
cast everything. Generics don't help, because it still does a cast
internally. If you have a performance-intensive app, don't use
Collections. Write your own wrapper around an array of the proper type.
(But *only* if know for sure that casts are causing a performance problem).
 
R

Ronin

Hi Chris thanks but I cant use ArrayList as I'm using J2ME. The API
does not have that class.

the thing is im reading data from a server and I dont know the size
beforehand. So I'm first dropping it into a Vector than move it to a
Object[][] so to save the whole casting shebang when im iterating
through it.

If there is no solution to port to Object[][] from vector.copyInto,
then yes I'll have to write my own little Vector class. I'll keep my
eye on this thread for a while.

cheers


Ronin said:
I have absolutely no idea how to do this. I inserted a [] array into a
vector, which then ofcourse became a [][] array, but now can't get it
out back to a Object[][].


Vector vector = new Vector();
vector.addElement(new Object[]{"A","B"});
vector.addElement(new Object[]{"C","D"});

Object obj[] = new Object[m.size()]; //this works so far

m.copyInto((Object[]) obj); //this works so far
Object[][] attribute = (Object[][]) obj; //BANG!!!

why the hell wont it work?

for now I'll just use the crappy m.elementAt() function and cast to [].
All this casting in a loop eats CPU though.

Some random, maybe not-useful ideas:

-- Don't use Vector. Use ArrayList.

-- ArrayList.toArray() is helpful

-- One of the problems with the Collection classes is that you have to
cast everything. Generics don't help, because it still does a cast
internally. If you have a performance-intensive app, don't use
Collections. Write your own wrapper around an array of the proper type.
(But *only* if know for sure that casts are causing a performance problem).
 
R

Ronin

Christ! what a good night of sleep can do!

Here the solution:

Vector vector = new Vector();
vector.addElement(new Object[]{"A","B"});
vector.addElement(new Object[]{"C","D"});
Object obj[][] = new Object[vector.size()][2];
vector.copyInto((Object[]) obj);


Hi Chris thanks but I cant use ArrayList as I'm using J2ME. The API
does not have that class.

the thing is im reading data from a server and I dont know the size
beforehand. So I'm first dropping it into a Vector than move it to a
Object[][] so to save the whole casting shebang when im iterating
through it.

If there is no solution to port to Object[][] from vector.copyInto,
then yes I'll have to write my own little Vector class. I'll keep my
eye on this thread for a while.

cheers


Ronin said:
I have absolutely no idea how to do this. I inserted a [] array into a
vector, which then ofcourse became a [][] array, but now can't get it
out back to a Object[][].


Vector vector = new Vector();
vector.addElement(new Object[]{"A","B"});
vector.addElement(new Object[]{"C","D"});

Object obj[] = new Object[m.size()]; //this works so far

m.copyInto((Object[]) obj); //this works so far
Object[][] attribute = (Object[][]) obj; //BANG!!!

why the hell wont it work?

for now I'll just use the crappy m.elementAt() function and cast to [].
All this casting in a loop eats CPU though.

Some random, maybe not-useful ideas:

-- Don't use Vector. Use ArrayList.

-- ArrayList.toArray() is helpful

-- One of the problems with the Collection classes is that you have to
cast everything. Generics don't help, because it still does a cast
internally. If you have a performance-intensive app, don't use
Collections. Write your own wrapper around an array of the proper type.
(But *only* if know for sure that casts are causing a performance problem).
 
R

Ronin

Just for those that want to use Vector.toArray() methods .... no such
thing in J2ME

its hacking all the way.
Christ! what a good night of sleep can do!

Here the solution:

Vector vector = new Vector();
vector.addElement(new Object[]{"A","B"});
vector.addElement(new Object[]{"C","D"});
Object obj[][] = new Object[vector.size()][2];
vector.copyInto((Object[]) obj);


Hi Chris thanks but I cant use ArrayList as I'm using J2ME. The API
does not have that class.

the thing is im reading data from a server and I dont know the size
beforehand. So I'm first dropping it into a Vector than move it to a
Object[][] so to save the whole casting shebang when im iterating
through it.

If there is no solution to port to Object[][] from vector.copyInto,
then yes I'll have to write my own little Vector class. I'll keep my
eye on this thread for a while.

cheers


Ronin wrote:
I have absolutely no idea how to do this. I inserted a [] array into a
vector, which then ofcourse became a [][] array, but now can't get it
out back to a Object[][].


Vector vector = new Vector();
vector.addElement(new Object[]{"A","B"});
vector.addElement(new Object[]{"C","D"});

Object obj[] = new Object[m.size()]; //this works so far

m.copyInto((Object[]) obj); //this works so far
Object[][] attribute = (Object[][]) obj; //BANG!!!

why the hell wont it work?

for now I'll just use the crappy m.elementAt() function and cast to [].
All this casting in a loop eats CPU though.


Some random, maybe not-useful ideas:

-- Don't use Vector. Use ArrayList.

-- ArrayList.toArray() is helpful

-- One of the problems with the Collection classes is that you have to
cast everything. Generics don't help, because it still does a cast
internally. If you have a performance-intensive app, don't use
Collections. Write your own wrapper around an array of the proper type.
(But *only* if know for sure that casts are causing a performance problem).
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,055
Latest member
SlimSparkKetoACVReview

Latest Threads

Top