java 尝试Map对象列表时出错

vjhs03f7  于 2022-12-28  发布在  Java
关注(0)|答案(2)|浏览(150)

我试图Map下面的列表:

mappedCustomers = customers.stream().map(e ->e.setLastName("e")).collect(Collectors.toList());

客户分类

@Entity
@Table(name = "customer")
public class Customer {

@Id
@GeneratedValue
Long id;

String firstName;

String lastName;

public Long getId() {
    return id;
}

public String getFirstName() {
    return firstName;
}

public void setFirstName(String firstName) {
    this.firstName = firstName;
}

public String getLastName() {
    return lastName;
}

public void setLastName(String lastName) {
    this.lastName = lastName;
}

}
但我得到这个错误:
不存在类型变量R的示例,因此void符合R

knpiaxh1

knpiaxh11#

流API中的Map函数,需要返回值的函数。

<R> Stream<R> map(Function<? super T,? extends R> mapper)

但是setters的返回值是void(根本没有返回值),因此您的代码不符合map方法签名,如果您想迭代集合并执行可以使用forEach的操作

void forEach(Consumer<? super T> action)

没有必要做的收集,因为你最初的收集将是相同的,但它将包含您的修改。

customers.stream().forEach(x -> x.setLastName("e"))
abithluo

abithluo2#

map()返回一个新的流,所以如果需要的话,你可以链接另一个操作。然后,collect()返回一个新的列表。但是因为你只调用了一个setter,所以你最终得到了两个包含相同对象的列表。在这种情况下,forEach()会更简单。

customers.stream().forEach(e -> e.setLastName("e"));

相关问题