Как развернуть обработку так, чтобы в стриме были все данные, необходимые для обработки используя метод 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);
}