我正在尝试绘制以下列表:
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;
}
}
但我收到此错误:
Stream API 中的 Map 函数需要一个返回值的函数。
<R> Stream<R> map(Function<? super T,? extends R> mapper)
但是setter返回值是void(根本没有返回值),因此你的代码不符合map方法签名,如果你想迭代一个集合并执行一个操作,你可以使用forEach
void forEach(Consumer<? super T> action)
无需进行收集,因为您的初始收集将是相同的,但它将包含您的修改。
customers.stream().forEach(x -> x.setLastName("e"))
map()
返回一个新流,因此您可以根据需要链接另一个操作,但是您的映射方法必须返回一些内容才能使其工作。
由于您提供了一个返回 void
的 setter,因此您的代码将无法编译。
就你而言,
forEach()
会更简单。
customers.stream().forEach(e -> e.setLastName("e"));