Java lambda过滤器和映射,我可以避免这些重复调用吗?

AWT*_*AWT 1 java lambda

我正在学习lambdas,我想知道以下代码:

    ArrayList<String> lines = new ArrayList<>();
    lines.add("#ignored");
    lines.add("   #ignored2");
    lines.add("Not Ignored");
    lines.add("also not ignored");
    lines.add("   also Not Ignored but lower CASE");

    lines.stream()
            .filter(line -> !line.trim().startsWith("#"))
            .map(line -> line.trim().toLowerCase())
            .forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

输出:

not ignored
also not ignored
also not ignored but lower case
Run Code Online (Sandbox Code Playgroud)

对于过滤器和地图线,我正在调用trim()去除任何前导或拖尾空格.

这里是否可以修剪一次,存储结果,然后在地图中使用该结果?

Dav*_* SN 7

您可以map在开头使用该方法修剪线条:

lines.stream()
        .map(String::trim) // Trim the spaces
        .filter(line -> !line.startsWith("#"))
        .map(String::toLowerCase)
        .forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)