@Davidaa_WoW

Как инвертировать строки в массиве, имплементировав интерфейс Function?

Задача следующая: имплементировать интерфейс Function, где на вход поступает массив из строк, а на выходе должен быть массив инвертированных строк. Была бы это обычная реализация, там была бы куча возможностей и через массив разворачивать и через StringBuilder и вообще. А как вернуть разом в функциональном программировании я не понимаю, возможно из-за того, что не до конца понял тему.
Построил я какую-то такую структуру:
Function<String[], String[]> reverseString = input -> {
            
        };

А что писать внутри не пойму...
  • Вопрос задан
  • 76 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Akela_wolf
Extreme Programmer
Функциональное программирование - это про применение последовательности функций к аргументам (и про функции высшего порядка). Вообще, если коснулись функционального программирования и списков-массивов, то начинайте смотреть StreamAPI, это вот что ни на есть самая функциональщина в джаве. Вообще в джаве функциональное программирование не так чтобы очень хорошее, если эта тема интересна - идите в Котлин (или Скала, но Скала практически не применяется в промышленном программировании).

Вашу задачу можно решить, например, вот так:
import java.util.Arrays;

public class Main {

    public static void main(String[] args) {
        Arrays.stream(args).map(Main::reverse).forEach(System.out::println);
    }

    private static String reverse(String s) {
        final StringBuilder result = new StringBuilder();
        for (char c : s.toCharArray()) {
            result.insert(0, c);
        }

        return result.toString();
    }
}


Тут интерфейс используется неявно (в функции map), туда подставлена другая функция - reverse. Если хочется - можно обернуть её в интерфейс.
Ответ написан
Комментировать
@Arlekcangp
Разработчик, Лид, Архитектор ПО
В смысле, а чего тут непонятного ? У вас есть метод который на вход принимает String[] input, а выдать должен массив String[] но с инвертированными строками. Т е ровно тоже самое, что вы написали бы, если бы было так:
public String[] reverseString(String[] input) {
...
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы