File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Beginning Java and the fly likes a simple array question... Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "a simple array question..." Watch "a simple array question..." New topic

a simple array question...

zknyy wolf

Joined: Jan 07, 2003
Posts: 21
I have a String array like this:
String[] arrStr = {"123",null,null,"345",null,"fg",null}
if I turn it to like arrStr2 neither use loop to remove the null nor rebuild a arrstr array,how can I do :
arrStr2 = {"123","345","fg"}
Lance Finney
Ranch Hand

Joined: Apr 26, 2001
Posts: 133
There's probably a more efficient way, but you could do this:
Layne Lund
Ranch Hand

Joined: Dec 06, 2001
Posts: 3061
I can't think of a way off the top of my head to do it without a loop. Why don't you want to use a loop? Or did I just misunderstand the question?

Java API Documentation
The Java Tutorial
zknyy wolf

Joined: Jan 07, 2003
Posts: 21
tahnk you.Lance Finney and Layne Lund
I do it as Lance do.but I want to find a simple way as use API like
Object[] removeObject(Object[],Object)
now I think it's impossible.
Ranch Hand

Joined: Nov 22, 2008
Posts: 18944
It's quite some overkill, but not using (visible) loops can be done as follows:
String[] arr1= { ... };
List list= Arrays.asList(arr1);
List temp= Arrays.asList( new Object[] { null });
Object[] arr2= list.removeAll(temp).toArray();
The trouble is, you'll end up with an Object[], not a String[]. I think a simple (explicit) loop would be way more efficient.
kind regards
Jim Yingst

Joined: Jan 30, 2000
Posts: 18671
You can create a String[] rather than Object[] by precreating the array with the correct size:

The final line of Lance Finney's solution works as well - I just hate creating that extra zero-length array when I don't have to.
Unfortunately Arrays.asList() creates a fixed-length list - which means that removeAll() throws an UnsupportedOperationException. . We can work around this by creating another List:

Of course, in the original question, "if I turn it to like arrStr2 neither use loop to remove the null nor rebuild a arrstr array" doesn't make much sense - there's no way to avoid "rebuilding" an array here, since the new array has a different size from the original. So I don't know if this answer is considered acceptable or not - but I'm not going to worry too much about it.
[ February 01, 2003: Message edited by: Jim Yingst ]

"I'm not back." - Bill Harding, Twister
With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.
subject: a simple array question...
It's not a secret anymore!