我有以下課程“商店”: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的流類)或其他預定義的方法來做到這一點?先感謝您 :)
1 回答

白衣染霜花
TA貢獻1796條經驗 獲得超10個贊
通過使用flatMap你可以實現這一點,首先流式傳輸stores列表,然后通過將每個映射到flatMap流中。List<DayOfWeek>DayOfWeekOtherType
//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());
添加回答
舉報
0/150
提交
取消