使用RxJava,我有一个源Observable,它发出许多项目,我希望这些项目与另一个发出相同类型的Observable相交。在研究了许多选项之后,似乎构建事物的最连贯的方式是:
Observable<String> source = ...emits 20 items
Observable.create(subscriber -> {
source
.buffer(5)
.subscribe(things -> {
tocheck.getMatches(things) //emits 3 matches
.subscribe(subscriber::onNext, subscriber::onError, () -> {});
}, subscriber::onError, subscriber::onCompleted));
这里的预期输出是,当我订阅结果的可观察时,我会发出12个项目。由于getMatches的契约,我需要缓冲结果。
从表面上看,这似乎是可行的,但它似乎不是最干净的方式。过滤器似乎不适用于此,因为出于性能原因,我无法对每个项目运行相交检查。我尝试使用平面图,但getMatches可观察完成流,而不是来自源可观察的完成通知。
有没有更好的方法来构建这个?
编辑:要澄清这种风格的代码发生了什么,请执行以下操作:
Observable<String> source = ...emits 20 items
source
.buffer(5)
.flatMap(this::getMatches); //final observable would emit a total of 12 items
这显然更简洁,但当我添加一些日志记录时(假设数据大小与原始片段相同):
source
.doOnEach(notification -> {
log.trace("Processing {}", notification.getValue());
})
.buffer(5)
.flatMap(this::getMatches)
.doOnEach(notification -> {
log.trace("Processing after match {}", notification.getValue());
});
我得到了20个“Processing”日志实例,奇怪的是,“Processing after”日志中只有几行日志(我预计只有12行)。它似乎比它应该完成的时间更早。也许我的结构有问题?
所以看起来Androidx是正确的。我使用的是Redis莴苣反应API,它的行为看起来不太正常。上面添加的代码片段是构造两个可观察对象相交的正确方法。
问题内容: 我目前正在使用以下功能比较字典值。有更快或更更好的方法吗? 编辑:两个字典包含相同的键。 问题答案: 如果字典具有相同的键集,并且您需要所有这些打印件以实现任何值差异,那么您将无能为力。也许像这样: 几乎等同于您所拥有的,但是您可能会得到更好的演示,例如在循环使用diffkey之前对其进行排序。
问题内容: 在Python中,我已经看到使用此语法交换了两个变量值: 这是否被认为是交换两个变量值的标准方法,还是有其他一些习惯上最常用的交换两个变量的方法? 问题答案: Python从左到右计算表达式。请注意,在评估分配时,右侧的评估先于左侧。 http://docs.python.org/3/reference/expressions.html#evaluation-order 这意味着该表达
我正在使用Appium Java客户端为Sam's Club Android应用程序编写自动化。 在项目详细信息屏幕上,有一个价格字段。我正在尝试获得价格价值。问题是没有该要素的案文。 我查看了页面源并搜索了一下,看看是否有一个价格值在任何地方--但它似乎不存在于页面源的任何地方。 它的效果很好,我可以通过这种方式获得价值,但感觉我在这里做了一些矫枉过正。有更好的方法吗?
问题内容: 是否有一个很好的方法来Map 获取和忽略案件? 问题答案: TreeMap扩展了Map并支持自定义比较器。 字符串提供默认的不区分大小写的比较器。 所以: 比较器不考虑区域设置。在其JavaDoc中阅读有关它的更多信息。
我试图让我的UI显示两个按钮,其中一个稍微重叠在另一个,在一个全幅卡的中间。因为堆栈的宽度只能与其未定位的子级相同,所以我添加了一个宽度为double.infinity的SizedBox的未定位子级,以便给我一个画布来放置按钮,但我不知道该放什么作为SizedBox的高度。理想情况下,无论用户是在手机上还是在平板电脑上,我都希望这个小部件能够适当地调整自己的大小,所以我宁愿将SizedBox的高度
我有点形状文件和多边形形状文件。我想找出每个多边形内的最高点。我做了一个交集,以确定哪些点属于每个多边形: 现在我想为每个索引选择最高点。我认为这是一个在几何列中按Z值排序的问题,但我在做这件事时遇到了问题。我不知道如何使用geopandas从几何体中提取Z坐标。最后,我想进行空间连接,并将Z值填充到最近的点(另一个shapefile)。 非常感谢。