首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将迭代版本重写为Rx

如何将迭代版本重写为Rx
EN

Stack Overflow用户
提问于 2017-12-30 19:08:30
回答 1查看 49关注 0票数 0

我正在给Rx重写一个小项目,结果被困住了。

该项目的目标是为每个

  1. NBA球员(记录收集工资信息+统计信息: LeBron总共支付了1000万分,得分35000分,助攻3120次等);
  2. NBA球队(一般球队的记录统计信息:输赢率):自NBA开始以来,骑士队有356到200人。

最后,我们将获得两项大记录(记录== csv文件,每个球员/团队一条线):NBA球员:

  • LeBron,10e6,35000,3120
  • 神户,第3季6,1020,122

NBA球队

  • 骑士356,200
  • 勇士,1000,30

最初,每个球员都有一组球员,每个球员每年都有自己的薪水(基本上LeBron打了很多赛季,我们得到了关于他的信息: 10e6,15e6,20e6,根据这些信息我们更新了一个工资字段(一个工资字段),一个Map<Player, Info>,其中有工资、积分、助攻等领域。因此,我们只需迭代我们的球员,首先插入他们作为一个键,然后增加工资字段。

然后我们有一个游戏数组->,我们迭代和更新Map<Player, Info> (点数,助攻字段),然后是Map<Team, WLBalance>,其中WLBalance只是一对。

现在我想切换到Rx,我有两个可观察到的(一个发射<Player, Salary in some year>,另一个发射GameInfo)。最后,我想发出结果记录: NBA球员:

  • LeBron,10e6,35000,3120
  • 神户,第3季6,1020,122等

NBA球队:

  • 骑士356,200
  • 勇士,1000,30

我想使用reduce (以获得总工资、积分、助攻)功能,但我想不出如何首先基于Player进行过滤。然后是关于更新Map<K, V>中的值,而不是在一些可观察到的情况下减少值。

所以我的问题是

  1. 因为这些记录都是观察和发出的,它们应该是哪种类型的?看上去像个实验对象。
  2. 如何在Rx中替换Map逻辑(所以这将是很好的Rx方法)?我们的想法是,我们不知道我们是否已经得到了关于这名球员的工资信息,然后尝试更新数据,或者我们已经得到了关于他的数据,然后看到了薪水,这首先可以观察到这名球员的价值)。
EN

回答 1

Stack Overflow用户

发布于 2018-01-01 16:32:48

目前还不清楚您获取数据的顺序。但是,如果您只想按player减少,那么可以使用groupBy()操作符来执行映射:

代码语言:javascript
运行
复制
PlayerInfo mergeIt(PlayerInfo accumulator, PlayerInfo player) {
    accumulator.name = player.name;
    accumulator.salary += player.salary;
    accumulator.points += player.points;
    accumulator.assists += player.assists;
    return accumulator;
}

void runIt() {
    PublishSubject<PlayerInfo> pi = PublishSubject.create();
    pi.groupBy(PlayerInfo::getName)
        .flatMap(players -> players.collect(PlayerInfo::new, 
                                            ( piNew, p ) -> mergeIt( piNew, p ) ) )
        .subscribe(System.out::println);
    pi.onNext(new PlayerInfo("LeBron", 14000.0, 21, 32));
    pi.onNext(new PlayerInfo("Kobe", 12000.0, 22, 31));
    pi.onNext(new PlayerInfo("LeBron", 6000.0, 4, 14));
    pi.onCompleted();
}

然后,您可以对团队数据执行同样的操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48037046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档