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

时间:2016-10-17 15:41:58

标签: 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);

输出:

not ignored
also not ignored
also not ignored but lower case

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

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

2 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:2)

你可以尝试下面的

data2