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

Win a copy of Android Security Essentials Live Lessons this week in the Android forum!
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
It is sorta covered in the JavaRanch Style Guide.
subject: a simple array question...
Similar Threads
Appending two Multidimensional Arrays together
How to create prepared statement for query with clause where in
help required with split method of String class
Selective retrieval of numbers in a text file
How to align mutliple columns properly using print?