使用Java8中的流在map方法中进行多个操作

时间:2015-06-11 23:16:50

标签: lambda java-8

鉴于客户列表,我需要创建另一个列表,其中包含大写客户的名字。这是java中的代码 -

List<String> getFirstNames(List<Customer> customers)
{
    List<String> firstNames = new ArrayList<>();
    for(Customer customer: customers) {
        firstNames.add(StringUtils.uppercase(customer.getFirstName());
    }
    return firstNames;
}

如何在java8中使用lambda编写此方法。 我可以用这种方式使用流,转换为列表 -

customers.stream().map(Customer::getFirstName).collect(Collectors.toList());

但是,如何将firstName转换为大写,使用它?

2 个答案:

答案 0 :(得分:4)

最简单的方法是编写自己的lambda表达式,为您转换为大写:

 List<String> firstNames = customers.stream()
                         .map(customer->StringUtils.uppercase(customer.getFirstName()))
                        .collect(Collectors.toList());

答案 1 :(得分:0)

即使在代码中,您也要使用客户名称,然后执行toUpperCase。

      List<String> firstNames = customers.stream()
                    .map(customer-> customer.getFirstName())
                    .map(firstName -> StringUtils.uppercase(firstName))
                    .collect(Collectors.toList())