使用 Rx 运行直方图流

2023-12-31

我有以下单字母流

A 
B 
C 
A
D 
B 
A 
C 
D

从这个流中,我想要一个每个字母的运行计数流

(A,1)
(A,1), (B,1)
(A,1), (B,1), (C,1)
(A,2), (B,1), (C,1)
(A,2), (B,1), (C,1), (D,1)
(A,2), (B,2), (C,1), (D,1)
(A,3), (B,2), (C,1), (D,1)     
(A,3), (B,2), (C,2), (D,1) 
(A,3), (B,2), (C,2), (D,2)     

,即在每个新字母处,总数都会更新并发出。

我想这个问题与语言无关,所以请毫不犹豫地用您选择的语言提出解决方案。


这是可以使用的方法RxJava:

final Observable<String> observable = Observable.just("A", "B", "C", "A", "D", "B", "A", "C", "D");
final Observable<LinkedHashMap<String, Integer>> histogram = observable.scan(new LinkedHashMap<>(), (state, value) -> {
  if (state.containsKey(value)) {
    state.put(value, state.get(value) + 1);
  } else {
    state.put(value, 1);
  }

  return state;
});

histogram.subscribe(state -> {
  System.out.println(state);
});

Output:

{}
{A=1}
{A=1, B=1}
{A=1, B=1, C=1}
{A=2, B=1, C=1}
{A=2, B=1, C=1, D=1}
{A=2, B=2, C=1, D=1}
{A=3, B=2, C=1, D=1}
{A=3, B=2, C=2, D=1}
{A=3, B=2, C=2, D=2}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Rx 运行直方图流 的相关文章

随机推荐

  • 如何计算旋转后 HTML5 画布中的点的位置?

    看到后this http codentronix com 2011 04 27 first experiment with html5 a wireframe cube comment 2290代码 我不知道公式在哪里x 新浪 y 科萨来自
  • gcloudcomputessh 返回权限被拒绝(公钥)

    根据谷歌云文档 https cloud google com compute docs instances connecting to instance gcetools 如果我是具有 计算实例管理员 角色的项目成员 我应该能够使用 gcl
  • 上下文切换会导致 CPU 高吗[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我们正在分析一个性能问题 我们可能最多有500个工作线程 CPU使用率不是很高 上下文切换会导致CPU占用率过高吗 换句话说 由于CP
  • 解压受密码保护的文件

    我正在尝试使用 PowerShell 从 USB 驱动器中受密码保护的 zip 中提取文件 我查了很多方法 但最简单的一种似乎不起作用 7ZipPath C Program Files 7 Zip 7z exe zipFile E pass
  • Vagrant 网络与非 Hostonly 网络发生冲突

    我正在尝试启动并运行一个流浪盒子 但我不断收到网络冲突错误 这个盒子是trusty64的全新下载 我一直在搜索与 vagrant 相关的每个文件和文件夹 试图找到指定 IP 的内容 但我找不到 我在 Windows 7 机器上运行 vagr
  • 如何在 MySQL 中解释带参数的查询

    我有一个疑问 SELECT foo FROM bar WHERE some column 我可以从 MySQL 获取解释计划而不填写参数值吗 只要您只执行 equals 而不是 like 这可能会产生短路影响 只需将其替换为一个值 EXPL
  • 如何在我的 iOS 应用程序中正确实现 Services 类?

    我当前的困惑是 专门为我的 Rails 应用程序的服务调用实现一个模型类 这是场景 我有一个名为Service这是 NSObject 的子类 实现文件定义了一些方法 让我们看看doSignUp 我在用AF网络与 api 进行通信 From
  • Windows Phone 8.1:检查互联网连接

    我如何知道手机是否有互联网连接 无论是 WiFi 还是数据 有时手机会连接到 WiFi 但没有像 HotSpots 这样的互联网连接 所以我想要一个代码来知道手机是否连接到互联网 您可以简单地尝试 if NetworkInformation
  • 使用 Android Studio 创建自定义视图

    我正在尝试在 Android Studio 中创建一个可以将其从右向左拖动的小视图 该视图将有 2 个按钮 当您选择其中之一或按其外部时 小菜单将再次隐藏 我一直在寻找 但没有任何图书馆可以做类似的事情 我也不知道该怎么做 我可以在单独的视
  • 自定义微调器:setSelection 向下滚动

    我有一个自定义微调器 我有一个提示标签位于数组 微调器 的最后一个位置 因此为了显示它 我将选择设置为最后一个位置 如下所示 ArrayAdapter myAdapter new MySpinnerAdapter this R layout
  • RESTful 服务能否根据请求标头返回同一资源的 JSON 和 XML?

    我有一个简单的 RESTful 方法 当前返回对象的 JSON 表示形式 我的问题更多是从架构的角度来看的 而不是完全技术性的 RESTful 服务是否应该设计为同时返回 JSON 和 XML 据我所知 这是一种不好的做法 应该为此定义单独
  • dll大小(调试和发布)

    我在其他讨论中读到 与调试 dll 相比 Release dll 的大小减小了 但为什么我制作的dll大小却相反 Release dll比Debug dll大 会引起问题吗 它不会引起问题 可能是编译器在发布版本中 内联 更多项目并创建更大
  • 淘汰组件或模板性能提升

    我有一个可观察的数组 对于每个数组元素 我生成一些 html 表单 非常扩展 因为可观察数组项是依次具有可观察值的大对象 var records ko observableArray p1 ko observable initProp1 p
  • 什么是 Future 以及如何使用它?

    我收到以下错误 A value of type Future
  • SELECT 符合条件的行前后N行?

    我想要复制的行为就像 grep with A and B旗帜 例如grep A 2 B 2 hello myfile txt会给我所有包含 hello 的行 还有它之前的两行和之后的两行 让我们假设这个表模式 id message 1 On
  • 从不同的文件夹加载 DLL 引用?

    我有一个引用 DLL 的 NET 控制台应用程序 如果 DLL 与 EXE 位于同一文件夹中 它运行正常 但我想将 DLL 放在不同的文件夹中 我怎样才能做到这一点 If the DLL位于子文件夹中 您可以将此文件夹添加到AppDomai
  • 点击与其关联的表格行时如何选择地图图钉?

    这里我有2个看法 墙视图控制器 表视图控制器 墙视图控制器包含 MKMapView 以及表视图控制器是一个子类PFQueryTableViewController显示与注释固定关联的内容行墙视图控制器 表视图控制器添加为子视图墙视图控制器
  • Haskell:lift 与 liftIO

    在什么情况下应该liftIO使用 当我使用时ErrorT String IO the lift函数的作用是将 IO 操作提升为ErrorT so liftIO似乎是多余的 lift总是从 上一层 升起 如果需要从第二层提升 则需要lift
  • 使用异步 Session_Start 方法时出现会话问题?

    我最近开始使用 NET 4 5 而不是 NET 4 0 我很喜欢async特征 但是 当我在 Global asax 的 Session Start 事件中的 ASP NET 中使用它时 无论我做什么 如果我执行等待并访问会话 都会导致错误
  • 使用 Rx 运行直方图流

    我有以下单字母流 A B C A D B A C D 从这个流中 我想要一个每个字母的运行计数流 A 1 A 1 B 1 A 1 B 1 C 1 A 2 B 1 C 1 A 2 B 1 C 1 D 1 A 2 B 2 C 1 D 1 A 3