【问题标题】:Map an instance containing a list to a flatMap (using stream)将包含列表的实例映射到 flatMap(使用流)
【发布时间】:2019-12-09 04:37:51
【问题描述】:

我有以下类“商店”:

public class Store {
    private String storeId;
    private String storeName;
    private List<DayOfWeek> openiningDays;
}

(e.g.:)
{
    storeId: 1
    storeName: blabla
    openingDays: [MONDAY,TUESDAY,...]
}

以及“x”商店列表

List<Store> stores = ......

使用java的流类,或者其他类的方法, 我想得到一个工作日的平面列表, 包括 storeName 和 storeId。

例如:(期望的结果)

[
    {
    storeId: 1
    storeName: blabla
    openingDay: MONDAY
    },
    {
    storeId: 2
    storeName: blabla
    openingDay: SATURDAY
    },
    {
    storeId: 3
    storeName: blabla
    openingDay: FRIDAY
    }
]

我已经找到了可能的解决方案, 但我对此并不满意:

List<OtherType> transformed = new List<>();
for (Store store : stores) {
    for (DayOfWeek currentDay : openingDays) {
        transformed.add(new OtherType(.....));
    }
}

有没有可能用'flatMap(..)'之类的东西来做到这一点 (能够使用java的流类) 还是其他预定义的方法?

提前谢谢你:)

【问题讨论】:

  • 您在 Java 中的属性,即 List&lt;DayOfWeek&gt; openiningDays; 与 JSON openingDay: MONDAY 相矛盾,这不是一个集合,OtherType 的模型是什么?
  • 这只是一个真实业务用例的修改示例。所以在这种情况下,这并不重要。不过谢谢你的提示。包含“openingDay:Monday”的代码 sn-p 显示了映射的结果应该是什么样子。不是初始模型的实例可能是什么样子。 'OtherType' 模型,关于这个例子,包含变量 'storeID' 'storeName' 和一个单一的 'weekDay'

标签: java set mapping java-stream flatmap


【解决方案1】:

通过使用flatMap,您可以实现此目的,首先流式传输stores 列表,然后通过将每个DayOfWeek 映射到OtherTypeflatMap 流中List&lt;DayOfWeek&gt;

//Assuming you have constructor in OtherType with three arguments like OtherType(String storeId, String storeName, DayOfWeek day)

List<OtherType> transformed = stores.stream()
                                    .flatMap(store->store.getOpeningDays().stream()
                                                                      .map(day->new OtherType(store.getStoreId(),store.getStoreName(),day)))
                                    .collect(Collectors.toList());

【讨论】:

    猜你喜欢
    • 2021-09-24
    • 2020-08-10
    • 1970-01-01
    • 2021-04-18
    • 1970-01-01
    • 2020-07-29
    • 2020-09-20
    • 1970-01-01
    • 2021-08-13
    相关资源
    最近更新 更多