So in C#, I can treat a string[]
as an IEnumerable<string>
.
Is there a Java equivalent?
-
Iterable <T>
Learning : I inserted the quote because I do not know how to escape the < char in the answer box in SO :(bruno conde : mark that as code :)Winston Smith : If you highlight the piece of code and click the Code Sample toolbar button (5th one across) on the markdown editor, if will get formatted correctly.Jon Skeet : Alternatively, for "inline" code, just put backticks around it. I've edited your post to show that - it's just `Iterable`. -
Are you looking for
Iterable<String>
?Iterable<T> <=> IEnumerable<T> Iterator<T> <=> IEnumerator<T>
-
I believe the Java equivalent is
Iterable<String>
. AlthoughString[]
doesn't implement it, you can loop over the elements anyway:String[] strings = new String[]{"this", "that"}; for (String s : strings) { // do something }
If you really need something that implements
Iterable<String>
, you can do this:String[] strings = new String[]{"this", "that"}; Iterable<String> stringIterable = Arrays.asList(strings);
-
Iterable<String>
is the equivalent ofIEnumerable<string>
.It would be an odditity in the type system if arrays implemented
Iterable
.String[]
is an instance ofObject[]
, butIterable<String>
is not anIterable<Object>
. Classes and interfaces cannot multiply implement the same generic interface with different generic arguments.String[]
will work just like anIterable
in the enhanced for loop.String[]
can easily be turned into anIterable
:Iterable<String> strs = java.util.Arrays.asList(strArray);
Prefer collections over arrays (for non-primitives anyway). Arrays of reference types are a bit odd, and are rarely needed since Java 1.5.
0 comments:
Post a Comment