Po pierwsze, tablice obiektów w Javie są znacznie gorsze od List
s, więc powinieneś naprawdę ich użyć, jeśli to możliwe. Możesz utworzyć widok String[]
jako List<String>
przy użyciu Arrays.asList
.
Po drugie, Java nie ma jeszcze wyrażeń lambda ani odniesień do metod, więc nie ma łatwego sposobu, aby to zrobić ... i odwoływanie się do metody o nazwie jako String
jest wysoce podatne na błędy i nie jest dobrym pomysłem.
Powiedział, Guava zapewnia pewne podstawowe elementy funkcjonalne, które pozwolą Ci robić to, co chcesz:
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);
}
przeciwieństwie tworząc nową tablicę lub List
i kopiowanie małą wersję każdego String
do niego, to robi nie powtarzaj elementów oryginalnego List
po utworzeniu i wymaga bardzo mało pamięci.
Z Java 8, wyrażenia lambda i referencje metody powinny ostatecznie zostać dodane do Java wraz z metod rozszerzenie dla funkcji wyższego rzędu, takich jak map
, czyniąc to znacznie łatwiejsze (coś takiego):
List<String> lowerCaseStrings = strings.map(String#toLowerCase);
Co robi ta linia? To nie jest dokładnie ekspresyjne. – skaffman
@skaffman - funkcja strtolower() PHP zwraca ciąg znaków małych liter, podobnie jak Java .toLowerCase(). Powyższa funkcja stosuje (mapuje) funkcję strtolower() do każdego elementu w tablicy $, zwracając tablicę ze wszystkimi elementami małymi literami. – mellowsoon