一,flatMap
flatmap既可以單一轉換也可以一對多/多對多轉換,flatmap要求返回Observable,因此可以再內部進行from/just的再次事件分發,一一取出單一對象(轉換對象的能力不同)
如adDataVOS裏面有個Freq對象屬性,而Freq對象屬性裏又有個List<Frequency> frequency對象集合屬性,想通adDataVOS直接
獲取其下的所有frequency對象的id集合,而使用flatMap比較合適
List<Integer> idList = adDataVOS.stream().flatMap(adDataVO-> adDataVO.getFreq().getFrequency().stream().map(Frequency::getId)
二,groupingBy(Collectors.groupingBy)
對於List<ConfigDataBean> configDataBeanList集合,構造以ConfigDataBean對象的ruleId進行分組的map對象:
其中key爲configDataBean的ruleId, value爲ruleId關聯的所有的ConfigDataBean對象
Map<Integer, List<ConfigDataBean>> configDataMap = configDataBeanList.stream().collect(Collectors.groupingBy(ConfigDataBean::getRuleId));