Forums Register Login
a simple array question...
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"}
There's probably a more efficient way, but you could do this:
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?
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.
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
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 ]
Wink, wink, nudge, nudge, say no more ... https://richsoil.com/cards

All times above are in ranch (not your local) time.
The current ranch time is
Sep 20, 2017 20:11:22.