45 votes

Tableaux et génériques Java: Java équivalent à C # IEnumerable <T>

Donc en C #, je peux traiter un string[] comme un IEnumerable<string> .

Existe-t-il un équivalent Java?

47voto

Tom Hawtin - tackline Points 82671

Iterable<String> est l'équivalent d' IEnumerable<string>.

Il serait un odditity dans le système de type si les tableaux mis en oeuvre Iterable. String[] est une instance de l' Object[], mais Iterable<String> n'est pas un Iterable<Object>. Les Classes et les interfaces ne peuvent pas se multiplier implémenter la même interface générique avec différents arguments génériques.

String[] fonctionneront comme un Iterable dans le renforcement de la boucle for.

String[] peut facilement être transformée en une Iterable:

Iterable<String> strs = java.util.Arrays.asList(strArray);

Préférez les collections de tableaux (pour les non-primitives de toute façon). Les tableaux de types de référence sont un peu bizarre, et sont rarement nécessaires depuis Java 1.5.

8voto

bruno conde Points 28120

Recherchez-vous Iterable<String> ?

 Iterable<T> <=> IEnumerable<T>
Iterator<T> <=> IEnumerator<T>
 

4voto

Learning Points 5386

Iterable <T>

2voto

Dan Vinton Points 11975

Je crois que l'équivalent Java est Iterable<String> . Bien que String[] ne l'implémente pas, vous pouvez quand même boucler sur les éléments:

 String[] strings = new String[]{"this", "that"};
for (String s : strings) {
    // do something
}
 

Si vous avez vraiment besoin de quelque chose qui implémente Iterable<String> , vous pouvez le faire:

 String[] strings = new String[]{"this", "that"};
Iterable<String> stringIterable = Arrays.asList(strings);
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X