Рубрики
Без рубрики

Обратная строка в одной строке

Вчера, просматривая Твиттер, я наткнулся на это:… Вчера, просматривая Твиттер, я наткнулся на это:…

Вчера, просматривая Твиттер, я наткнулся на это:…

public String reverse(String in){
    String[] split = in.split("");
    Collections.reverse(Arrays.asList(split));
    return String.join("", split);
}

Это работает, но это больше, чем одна строка. Чтобы создать один лайнер, я начал изучать Java Stream API и его методы. Хотя я знал, что ни о каких промежуточных операциях для такой задачи не может быть и речи, я начал искать доступные сборщики. Мой поиск вернулся пустым, и мне пришлось прибегнуть к внедрению пользовательского сборщика:

public String reverse(String in){
    return Arrays.stream(in.split("")).collect(new Collector, String>() {
        final List helper = new LinkedList<>();
        @Override
        public Supplier> supplier() {
            return () -> helper;
        }

        @Override
        public BiConsumer, String> accumulator() {
            return (strings, s) -> strings.add(0, s);
        }

        @Override
        public BinaryOperator> combiner() {
            return null;
        }

        @Override
        public Function, String> finisher() {
            return strings -> String.join("", strings);
        }

        @Override
        public Set characteristics() {
            return new HashSet<>();
        }
    });
}

Вот оно! Вот оно! Вот оно! Вот оно! Вот оно! Вот оно! Вот оно! Вот оно! Вот оно! Вот оно!

Оригинал: “https://dev.to/codingmanta/reverse-string-in-one-line-5e4b”