java 使用java 8进行字符串处理的有趣示例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 使用java 8进行字符串处理的有趣示例相关的知识,希望对你有一定的参考价值。

package Java_FP.collection;

import java.util.Arrays;
import java.util.Optional;
import java.util.function.BinaryOperator;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Stream;

/**
 * Created by liuyufei on 19/10/16.
 */
public class CollectionExample_8 {

    final static String[] food = new String[]{
            "Crunchy carrots",
            "Golden-hued bananas",
            "",
            "Bright orange pumpkins",
            "Little trees of broccoli",
            "meat"
    };


    public static final Predicate<String> NON_EMPTY = s -> !s.isEmpty();

    //just return the last element, ignore the previous ones
    private static BinaryOperator<String> chooseLast = (allSoFar,nextElement)-> nextElement;

    private static Function<String,String> lastWord =
            phrase -> Arrays.asList(phrase.split(" ")).stream().reduce(chooseLast).orElse("");

    private static BinaryOperator<String> joinOn(String connector) {
        return (allSoFar, nextElement) -> allSoFar + connector + nextElement;
    }

    private static String summarize(final String[] description) {
        return Arrays.asList(description).stream()
                .filter(NON_EMPTY)
                .map(lastWord)
                .reduce(joinOn(" & "))
                .orElse("");
        //avoid null pointer exception, if allTogetherNow is empty, "" will be returned
    }
    

    public static void main(String[] args) {
        final String summary = summarize(food);
        final String desiredSummary =
                "carrots & bananas & pumpkins & broccoli & meat";
        System.out.println(summary);
        if (summary.equals(desiredSummary)) System.out.println("yay!");
    }

}

以上是关于java 使用java 8进行字符串处理的有趣示例的主要内容,如果未能解决你的问题,请参考以下文章

jdk 8 lambda表达式 及在Android Studio的使用示例

java 如何对中英文和符号数字混合的字符串进行截取,其中包含各种括号( ( [ < >] ) )?

Java 8 时间日期库的20个使用示例

Java 8 Stream入门

Java 8 Stream入门

Java 8新的时间日期库的20个使用示例