Lambda Java8中使用streams的map方法中的多个操作

Lambda Java8中使用streams的map方法中的多个操作,lambda,java-8,Lambda,Java 8,给定客户列表,我需要创建另一个以大写字母显示客户名字的列表。这是java中的代码- List<String> getFirstNames(List<Customer> customers) { List<String> firstNames = new ArrayList<>(); for(Customer customer: customers) { firstNames.add(StringUtils.upper

给定客户列表,我需要创建另一个以大写字母显示客户名字的列表。这是java中的代码-

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

但是,如何使用此函数将firstName转换为大写?

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

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

即使在您的代码中,您也要记下客户的姓名,然后再进行案例分析

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

方法引用
customers.stream().map(Customer::getFirstName).map(StringUtils::uppercase).collect(toList())
有没有理由使用
StringUtils.uppercase(customer.getFirstName())
而不是简单地使用
customer.getFirstName().toUpperCase()
?@SotiriosDelimanolis我们不应该像答案一样在一行中完成,而不是在两次迭代中完成?
      List<String> firstNames = customers.stream()
                    .map(customer-> customer.getFirstName())
                    .map(firstName -> StringUtils.uppercase(firstName))
                    .collect(Collectors.toList())