Как развернуть обработку так, чтобы в стриме были все данные, необходимые для обработки используя метод reduce или collect

необходимо реализовать метод (Класс Unit1, метод revertString()), который переставит символы в строке (переменная INPUT_STRING внутри класса Unit1) в обратном порядке, без использования метода reverse() из класса StringBuilder

В случае успеха в консоль будет выведено сообщение Строка изменена корректно

В случае, если строка изменена неправильно, то выполнение будет завершено ошибкой с текстом Ошибка, строка изменена неверно

import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class Unit1 {

    private static final String INPUT_STRING = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, "
            + "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.";


    public static void main(String[] args) {
        String result = revertString();
        checkResult(result);        
    }

    /**
     * При реализации метода нельзя использовать метод reverse() из класса StringBuilder
     * @return
    */
    private static String revertString() {
        return IntStream.range(0, INPUT_STRING.length())        
            .mapToObj((i) -> String.valueOf(INPUT_STRING.charAt(INPUT_STRING.length() - i - 1)))        
            .collect(Collectors.joining());                
    }

    private static void checkResult(String result) {
        if (INPUT_STRING.equals(new StringBuilder(result).reverse().toString())) {
            System.out.println("Строка изменена корректно");
        } else {
            throw new RuntimeException("Ошибка, строка изменена неверно");
        }
    }
}

Ответы (1 шт):

Автор решения: Jackson750

Думаю суть вам понятна

public static void main(String[] args) {
    String result = revertString();
    checkResult(result);

    String reversed = INPUT_STRING.chars()
            .mapToObj(c -> (char)c)
            .reduce("", (s,c) -> c+s, (s1,s2) -> s2+s1);
    System.out.println(reversed);
}

UPD

   private static String revertString() {

        return INPUT_STRING.chars()
                .mapToObj(c -> (char)c)
                .reduce("", (s,c) -> c+s, (s1,s2) -> s2+s1);
    }

public static void main(String[] args) {
        String result = revertString();
        checkResult(result);

    }
→ Ссылка