流在Android中不被称为



我有流:

Stream.of(coachingAreas)
            .map(coachingArea -> Observable.from(coachingArea.weeks)
            .map(coachingWeekRef -> coachingMap.put(coachingWeekRef.id, coachingWeekRef.version)));

每个数组都有数据,不是空的,而是该行:coachingMap.put(coachingWeekRef.id, coachingWeekRef.version)不称呼。知道为什么?

  1. 您尚未在因此,流媒体流保持空闲状态。中间操作由终端操作驱动。本质上,终端操作产生了 non-stream 结果,例如原始值,对象,集合等。

  2. 在引入副作用时,请勿在map中间操作中执行coachingMap.put,而是使用toMap收集器。

假设coachingWeekRef.idcoachingWeekRef.version都是整数,那么整个查询看起来都这样:

Map<Integer, Integer> resultSet = 
     Stream.of(coachingAreas)
           .map(coachingArea -> Observable.from(coachingArea.weeks))
           .collect(Collectors.toMap(ClassName::getId, ClassName::getVersion));

或使用lambda表达式提取地图键和值,而不是如果您喜欢的话参考。

最新更新