Por lo tanto, en C#, puedo tratar un string[]
como IEnumerable<string>
.Matrices de Java y genéricos: Java equivalente a C# IEnumerable <T>
¿Hay un equivalente de Java?
Por lo tanto, en C#, puedo tratar un string[]
como IEnumerable<string>
.Matrices de Java y genéricos: Java equivalente a C# IEnumerable <T>
¿Hay un equivalente de Java?
Iterable<String>
es el equivalente de IEnumerable<string>
.
Sería una rareza en el sistema de tipos si las matrices implementadas Iterable
. String[]
es una instancia de Object[]
, pero Iterable<String>
no es Iterable<Object>
. Las clases y las interfaces no pueden multiplicar implementan la misma interfaz genérica con diferentes argumentos genéricos.
String[]
funcionará igual que Iterable
en el bucle for mejorado.
String[]
puede ser fácilmente convertido en un Iterable
:
Iterable<String> strs = java.util.Arrays.asList(strArray);
Prefiero colecciones más de arrays (para los no primitivas de todos modos). Las matrices de tipos de referencia son un poco raras, y rara vez se necesitan desde Java 1.5.
Iterable <T>
¿Está buscando una Iterable<String>
?
Iterable<T> <=> IEnumerable<T>
Iterator<T> <=> IEnumerator<T>
Creo que el equivalente de Java es Iterable<String>
. Aunque String[]
no implementa ella, puede iterar sobre los elementos de todas formas:
String[] strings = new String[]{"this", "that"};
for (String s : strings) {
// do something
}
Si realmente necesita algo que implementa Iterable<String>
, usted puede hacer esto:
String[] strings = new String[]{"this", "that"};
Iterable<String> stringIterable = Arrays.asList(strings);
Iterable<T>
está bien, pero hay un pequeño problema. No se puede usar fácilmente en stream()
, es decir, expresiones lambda.
Si lo desea, debe obtener su spliterator y utilizar la clase StreamSupport()
.
Para obtener más información sobre _por qué_ no se puede convertir entre Iterable y Iterable
Bien, ahora vamos a abordar el gorila de 500 libras en la habitación. ¿Cómo se usa 'Iterable'? - ¿Cuál es la declaración equivalente de 'yield return' en Java? –
BrainSlugs83
@ BrainSlugs83 Creo que esa es una pregunta diferente. –