views:

1487

answers:

4

So in C#, I can treat a string[] as an IEnumerable<string>.

Is there a Java equivalent?

+3  A: 

Iterable <T>

Learning
I inserted the quote because I do not know how to escape the < char in the answer box in SO :(
Learning
mark that as code :)
bruno conde
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.
Winston Smith
Alternatively, for "inline" code, just put backticks around it. I've edited your post to show that - it's just `Iterable<T>`.
Jon Skeet
+3  A: 

Are you looking for Iterable<String>?

Iterable<T> <=> IEnumerable<T>
Iterator<T> <=> IEnumerator<T>
bruno conde
+2  A: 

I believe the Java equivalent is Iterable<String>. Although String[] 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);
Dan Vinton
+3  A: 

Iterable<String> is the equivalent of IEnumerable<string>.

It would be an odditity in the type system if arrays implemented Iterable. String[] is an instance of Object[], but Iterable<String> is not an Iterable<Object>. Classes and interfaces cannot multiply implement the same generic interface with different generic arguments.

String[] will work just like an Iterable in the enhanced for loop.

String[] can easily be turned into an Iterable:

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.

Tom Hawtin - tackline