En primer lugar, las matrices de objetos en Java son muy inferiores a List
s, por lo que en realidad debería usarlas si es posible. Puede crear una vista de String[]
como List<String>
usando Arrays.asList
.
En segundo lugar, Java aún no tiene expresiones lambda o referencias de métodos, por lo que no hay una manera bonita de hacerlo ... y hacer referencia a un método por su nombre como String
es altamente propenso a errores y no es una buena idea.
Dicho esto, Guava proporciona algunos elementos funcionales básicos que le permitan hacer lo que quiera:
public static final Function<String, String> TO_LOWER =
new Function<String, String>() {
public String apply(String input) {
return input.toLowerCase();
}
};
// returns a view of the input list with each string in all lower case
public static List<String> toLower(List<String> strings) {
// transform in Guava is the functional "map" operation
return Lists.transform(strings, TO_LOWER);
}
A diferencia de la creación de una nueva matriz o List
y la copia de la versión en minúsculas de cada String
en ella, esto hace no iterar los elementos del original List
cuando se creó y requiere muy poca memoria.
Con Java 8, expresiones lambda y referencias método debe finalmente ser añadido a Java, junto con los métodos de extensión de funciones de orden superior como map
, haciendo de este mucho más fácil (algo así):
List<String> lowerCaseStrings = strings.map(String#toLowerCase);
¿Qué hace esa línea? No es exactamente expresivo. – skaffman
@skaffman - La función strtolower() de PHP devuelve una cadena con mayúsculas y minúsculas, similar a la de Java .toLowerCase(). La función anterior aplica (mapea) la función strtolower() a cada elemento en $ array, devolviendo así una matriz con todos los elementos con menor entubación. – mellowsoon