Java 布尔值的流映射?
Java stream mapping for a boolean value?
我有以下 DTO:
@Data
public class MenuItemDTO {
private UUID siteUuid;
private UUID productUuid;
private boolean outOfStock;
public MenuItemDTO(MenuItem menuItem, boolean outOfStock) {
this.siteUuid = menuItem.getSiteUuid();
this.productUuid = menuItem.getProductUuid();
this.outOfStock = outOfStock;
}
}
我在 MenuItem
实体中没有 outOfStock
字段,如果记录不为空,我想填写 outOfStock
字段(我只是保留缺货产品)。但是我不确定是否有使用流的正确方法:
public List<MenuItemDTO> findAllBySiteBrandUuid(UUID siteUuid) {
return menuItemRepository.findAllBySiteUuid(siteUuid)
.stream()
.map(m -> new MenuItemDTO(m, m.getUuid() != null))
.collect(Collectors.toList());
}
1. 由于我没有在 MenuItem
实体中保留 outOfStock
字段,我在 MenuItemDTO
中的方法是否正确?
2. 我想知道是否有更优雅的方法通过在 .map(m -> new MenuItemDTO(m, m.getUuid() != null))
部分正确使用流。
有些重复。您正在将对象和对象的字段传递给构造函数。也许更优雅的方法是通过将逻辑移至构造函数来避免两次传递信息:
public MenuItemDTO(MenuItem menuItem) {
this.siteUuid = menuItem.getSiteUuid();
this.productUuid = menuItem.getProductUuid();
this.outOfStock = menuItem.getUuid() != null;
}
然后流映射缩减为:
public List<MenuItemDTO> findAllBySiteBrandUuid(UUID siteUuid) {
return menuItemRepository.findAllBySiteUuid(siteUuid)
.stream()
.map(MenuItemDTO::new)
.collect(Collectors.toList());
}
DTO 中的信息是客户需要的任何信息,因此我们无法决定将布尔值放在那里是否正确。我会说,如果那是将在客户端使用的东西,那就太好了。
我有以下 DTO:
@Data
public class MenuItemDTO {
private UUID siteUuid;
private UUID productUuid;
private boolean outOfStock;
public MenuItemDTO(MenuItem menuItem, boolean outOfStock) {
this.siteUuid = menuItem.getSiteUuid();
this.productUuid = menuItem.getProductUuid();
this.outOfStock = outOfStock;
}
}
我在 MenuItem
实体中没有 outOfStock
字段,如果记录不为空,我想填写 outOfStock
字段(我只是保留缺货产品)。但是我不确定是否有使用流的正确方法:
public List<MenuItemDTO> findAllBySiteBrandUuid(UUID siteUuid) {
return menuItemRepository.findAllBySiteUuid(siteUuid)
.stream()
.map(m -> new MenuItemDTO(m, m.getUuid() != null))
.collect(Collectors.toList());
}
1. 由于我没有在 MenuItem
实体中保留 outOfStock
字段,我在 MenuItemDTO
中的方法是否正确?
2. 我想知道是否有更优雅的方法通过在 .map(m -> new MenuItemDTO(m, m.getUuid() != null))
部分正确使用流。
有些重复。您正在将对象和对象的字段传递给构造函数。也许更优雅的方法是通过将逻辑移至构造函数来避免两次传递信息:
public MenuItemDTO(MenuItem menuItem) {
this.siteUuid = menuItem.getSiteUuid();
this.productUuid = menuItem.getProductUuid();
this.outOfStock = menuItem.getUuid() != null;
}
然后流映射缩减为:
public List<MenuItemDTO> findAllBySiteBrandUuid(UUID siteUuid) {
return menuItemRepository.findAllBySiteUuid(siteUuid)
.stream()
.map(MenuItemDTO::new)
.collect(Collectors.toList());
}
DTO 中的信息是客户需要的任何信息,因此我们无法决定将布尔值放在那里是否正确。我会说,如果那是将在客户端使用的东西,那就太好了。