【发布时间】: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<DayOfWeek> openiningDays;与 JSONopeningDay: MONDAY相矛盾,这不是一个集合,OtherType的模型是什么? -
这只是一个真实业务用例的修改示例。所以在这种情况下,这并不重要。不过谢谢你的提示。包含“openingDay:Monday”的代码 sn-p 显示了映射的结果应该是什么样子。不是初始模型的实例可能是什么样子。 'OtherType' 模型,关于这个例子,包含变量 'storeID' 'storeName' 和一个单一的 'weekDay'
标签: java set mapping java-stream flatmap