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

Java lambda过滤器和映射,我可以避免这些重复调用吗?,java,lambda,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 lowe

我正在学习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);
对于筛选器行和映射行,我调用trim()来去除任何前导或尾随空格


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

您可以在开始时使用
map
方法修剪线条:

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

您可以在开始时使用
map
方法修剪线条:

lines.stream()
        .map(String::trim) // Trim the spaces
        .filter(line -> !line.startsWith("#"))
        .map(String::toLowerCase)
        .forEach(System.out::println);
你可以在下面试试

lines.stream().map(String::trim).filter(line -> !line.startsWith("#")).map(String::toLowerCase).forEach(System.out::println);
你可以在下面试试

lines.stream().map(String::trim).filter(line -> !line.startsWith("#")).map(String::toLowerCase).forEach(System.out::println);

您可以使用相同的方法编写
.map(String::trim)
:)toLowerCase@maxpovverThanx,我将答案更改为使用方法引用toLowerCase@maxpovverThanx,我将答案改为使用方法参考;这是不清楚或没有用处。这就是你的理由。如果你想要更多的信息,请访问Meta。这个问题没有显示任何研究成果;这是不清楚或没有用处。这就是你的理由。如果您想要更多信息,请访问Meta。