【问题标题】:Cannot create map from two connected entities in Java无法从 Java 中的两个连接实体创建地图
【发布时间】:2022-01-14 02:49:42
【问题描述】:

我有以下实体(为简洁起见省略了不必要的部分):

public class Site {

    private UUID uuid;

    private UUID countryUuid;
}

public class Country {

    private UUID uuid;

    @Column(nullable = false)
    private String name;

    @Column(nullable = false)
    private String code;

    @Column(nullable = false)
    private Currency currency;
}

我有List<UUID>Site 并尝试为siteUuidCurrency 对创建Map<UUID, Currency>。为了使用国家/地区列表,我尝试了如下所示的操作,但没有管理。

// get site list
final List<SiteDTO> siteList = siteService.findAllByUuidIn(siteUuidList);

// then get country list
final List<CountryDTO> countryList = siteList.stream()
      .map(SiteDTO::getCountry).collect(Collectors.toList());

// then finall try to map them to Currency
final Map<UUID, CountryDTO> uuidCurrencyMap = countryList
      .stream().collect(Collectors.toMap(CountryDTO::getUuid, Function.identity()));

但是,uuidCurrencyMap 提供 countryUuid - Currency 对,但我需要 siteUuid - Currency 对。那么,有可能吗?

【问题讨论】:

  • uuidCurrencyMap 不包含国家而不是货币吗?
  • uuidCurrencyMap 包含货币

标签: java lambda stream hashmap java-stream


【解决方案1】:

以下应该有效:

List<SiteDTO> siteList = siteService.findAllByUuidIn(siteUuidList);
Map<UUID, Currency> siteCurrency = siteList.stream()
  .collect(Collectors.toMap(SiteDTO::getUuid, siteDTO -> siteDTO.getCountry().getCurrency()));

【讨论】:

  • 你是摇滚!!!
猜你喜欢
  • 2017-04-04
  • 1970-01-01
  • 2019-05-05
  • 1970-01-01
  • 2019-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多