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
posted
0
There's probably a more efficient way, but you could do this:
Layne Lund
Ranch Hand
Joined: Dec 06, 2001
Posts: 3061
posted
0
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.
Anonymous
Ranch Hand
Joined: Nov 22, 2008
Posts: 18944
posted
0
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
Wanderer
Sheriff
Joined: Jan 30, 2000
Posts: 18670
posted
0
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 ]