使用 RX Java 获取过滤器索引或第一个的优雅方法

2024-03-12

我正在练习 RX Java,想要获取与过滤器匹配的项目在数组中的位置。我看不到任何明显的方法来做到这一点。我正在考虑压缩范围和可迭代可观察之类的东西,但它很快就变得比 for 循环更加冗长和复杂。


过去有mapWithIndex and zipWithIndexRxJava 中的运算符,但它们已被删除,请参阅here https://groups.google.com/forum/#!topic/rxjava/y0KMO7ci0QE why.

所以你必须编写一些库样板一次:

class Indexed<T> {
    final int index;
    final T value;
    public Indexed(T value, int index) {
        this.index = index;
        this.value = value;
    }
    @Override
    public String toString() {
        return index + ") " + value;
    }
}

Iterable<Integer> naturals = IntStream.iterate(0, i -> i + 1)::iterator;

但是,你可以得到相当简洁的内容:

Observable<String> obs = Observable.just("zero", "one", "two", "three");
obs.zipWith(naturals, (s, i) -> new Indexed<String>(s, i))
   .filter(e -> e.value.length() > 4)
   .subscribe(System.out::println);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 RX Java 获取过滤器索引或第一个的优雅方法 的相关文章

  • 如何通过无头活动处理静默 SEND 意图

    正如提问的用户所说 Android 上的默认浏览器如何发送 SEND 意图 https stackoverflow com questions 3320930 how does the default browser on android
  • 表“DBNAME.hibernate_sequence”不存在

    我有一个使用 spring data jpa 的 Spring Boot 2 0 1 RELEASE 应用程序
  • java中的内联初始化块

    我有课 public class MyMain public static void main String arg Temp t new Temp System out println instance initialize class
  • Java,ASM:如何从ASM InsnNode获取操作码名称和TagValue?

    我正在研究一些类文件分析 并且正在研究使用 ASM 来读取类 在 Javap 中 操作码以及 tagName 和 tagValue 是内联打印的 但在每个 AbstractInsnNode 中 我只看到 int 的字段 而不是 tagVal
  • 如何用Spring进行只读和读写的数据库路由

    我正在研究 Spring 中的事务路由 但我的应用程序存在运行时问题 我有两个 MySQL 数据库 一个用于读取 一个用于读 写 但是我的路由配置不起作用 当我应用只读配置时 我没有成功 这是我的配置 pom xml
  • ANT - 如何使用 javac 排除、排除文件?

    查看了 stackoverflow 上的几篇文章以及其他来源 在线 ANT 定义指南 但到目前为止没有一个有帮助 我无法从编译中排除该文件 我只有一个文件想要从编译中排除 而 ANT 文档并没有真正说明细节 我试图排除HTMLParser
  • 比 O(n) 更好的范围交集算法?

    范围交集是一个简单但不平凡的问题 已经回答过两次了 查找数字范围交集 https stackoverflow com questions 224878 find number range intersection 比较日期范围 https
  • JUnit 测试 Spymemcached 客户端

    我有一个类围绕spymemcached 客户端 我想编写一些JUnit 测试来测试getValue 和addKey 方法是否有效 问题是无法从测试服务器访问spymemcached 服务器 所以我想这里需要一些模拟 我的简化类看起来像这样
  • 如何在 Apache POI 中获取 Excel 空白单元格值?

    我有一个巨大的 Excel 文件 其中包含大量列 如下所示 Column1 Column2 Column3 Column4 Column5 abc def ghi mno pqr 这是我编写的用于打印这些值的代码 try FileInput
  • Java HashSet 具有自定义相等标准? [复制]

    这个问题在这里已经有答案了 我一直在寻找类似于 Java TreeSet 在实例化时接收自定义比较器的能力 因此我不需要使用对象的默认相等 和哈希码 标准 我能想到的最接近的方法是将我的对象包装在一个私有的自定义类中 但这看起来很老套 这最
  • GSON 预期为 BEGIN_ARRAY,但实际为 BEGIN_OBJECT

    当我仅收到列表中的一项时 我收到此错误 我在服务器端 REST Web 服务中使用 Jersey 只有当列表返回一个元素并且它具有0 elements I get java lang NullPointerException但是当它有多个时
  • 将 JSON 与嵌套数组和 json 进行比较(数组顺序无关紧要)

    你好 我正在尝试比较java中的两个json 每个键可以包含一个json对象或json对象数组 并且它们中的每个也可以是数组或json 这是 Json 的示例 id 123123asd123 attributes name apps val
  • Spring 如何在登录网址上设置动态前缀

    我有一个始终以动态前缀开头的 Spring 应用程序 这是因为我需要该前缀来进行一些内部配置 问题是 当我尝试设置登录页面时 无法传递该前缀并使其工作 如何为我的登录页面设置动态前缀 这是我的 AppController 的一部分 我在其中
  • 正确使用Optional.ifPresent()

    我正在尝试理解ifPresent 的方法OptionalJava 8 中的 API 我有一个简单的逻辑 Optional
  • 在 ant 脚本中包含外部 JAR 时出错

    这是我第一次尝试编写 ANT 脚本 这是我使用 Spring 构建的简单 Hello World 应用程序的 build xml
  • 用 org.Json 解析 Java 中的 JSON?

    我在这方面遇到了很多麻烦 我正在尝试进行更新 并且正在使用从 url 返回此内容的 api JSON downloadUrl URL fileName Name gameVersion Version name Name projectId
  • 当将 Eclipse 与 FindBugs 一起使用时,您可以将错误标记为非错误并将其从错误列表中删除吗?

    FindBugs 在我的代码中发现了潜在的错误 但这不是一个错误 是否可以将此事件标记为 不是错误 并将其从错误列表中删除 我已经非常清楚地记录了为什么每种情况都不是错误 例如 类实现类似的接口 它有compareTo方法 然而 我没有重写
  • Spring-WS WSDL生成问题

    我正在尝试制作一个非常简单的 Web 服务 但在让 spring 生成正确的 wsdl 时遇到一些困难 我已尽力复制此示例春季教程 http static springsource org spring ws sites 2 0 refer
  • Java邮件,设置回复地址不起作用

    我用java写了一个小的电子邮件发送程序 它有from to and reply to地址 当客户端尝试回复邮件时 应该能够回复reply to地址 目前它不起作用 我的代码如下 File Name SendEmail java impor
  • 如何将钱兑换成零钱

    尝试将输入的数字转换为 25 美分 50 美分 10 美分和 10 分 有几个问题 public class Coins public static void main String args private int quarters di

随机推荐

  • SQL依赖+服务代理

    我正在使用 SqlDependency 在某些表中的数据发生更改时获取通知 private void subscribeBroker using var conn new SqlConnection connString conn Open
  • 在Python中使用curses和raw_input

    在我的Python Linux控制台应用程序中 我使用curses来处理数据的显示 同时 我希望有一个输入行来输入命令 几乎是良好的 ol irssi 风格 使用默认的curses getch 我必须做大量的编码才能获得raw input函
  • 如何使 clang-format 尊重“类似表格”的代码格式

    我的代码具有按列对齐的数据或参数表 如下所示 人为的简单示例 实际代码具有更大的表 Name Size Starting val S s Dubs abc 123 X n m YZ ij q kl Name Size Starting va
  • 建议的解决方案:在分布式环境中生成唯一 ID

    我一直在浏览网络 试图找到一种解决方案 使我们能够在区域分布式环境中生成唯一的 ID 我查看了以下选项 除其他外 雪花 推特 这似乎是一个很棒的解决方案 但我只是不喜欢仅仅为了创建 ID 而必须管理另一个软件所带来的额外复杂性 现阶段缺乏文
  • Microsoft Word 中的 docx“文件已损坏”错误

    我写了一个程序 它打开docx包并更改一些
  • 使用 Java 与 MySQL 服务器的 SSL 连接

    我正在尝试使用 Java over SSL 连接到 MySQL 服务器 我收到以下异常 com mysql jdbc exceptions jdbc4 MySQLNonTransientConnectionException Cannot
  • Docker compose 和外部镜像多阶段构建

    I use Docker 多阶段构建 https docs docker com develop develop images multistage build 具体来说 使用外部图像作为 舞台 当使用多阶段构建时 您 不限于从您之前创建的
  • CLion C++ 无法读取/打开项目目录中的 .txt 文件

    我的项目目录中有一个我创建并填充了数据的 txt 文件 目录结构如下 Users asd ClionProjects ProjectWithTemplates main cpp cmake twoday txt 这是我的代码 include
  • 强制 UIImageView 的 CABasicAnimation 顺时针/逆时针旋转

    我正在制作一个钟摆的动画 该钟摆从 0 度摆动到最大 200 度 然后再返回 问题是 如果摆超过 180 度 它会通过最短路线返回到 0 度 即继续顺时针旋转 我希望它逆时针旋转 这是我的代码 right 是一个布尔值 当钟摆从左向右摆动时
  • 数据库查询生成器 toArray() laravel 4

    我正在尝试使用该方法将查询转换为数组toArray 但它不适用于查询生成器 有什么转换的想法吗 Example DB table user gt where name Jhon gt get gt toArray 如果您更喜欢使用查询生成器
  • 使用 R/ggplot2 损坏的条形图[重复]

    这个问题在这里已经有答案了 当存在一些极端计数时 我在缩放条形图时遇到困难 当它上升得更高时 很难看到较低的计数并在绘图上比较它们 我想打破条形图以重新调整它的比例 我知道重新调整比例是不好的绘图 但我只想在需要时这样做 我在附加链接中找到
  • 当用户跳过其中一个edittext并在下一个edittext上输入数据时如何提示错误?

    在此我有八个edittext 如果用户在edittext1处输入输入 则会跳过edittext 2并在edittext 3中输入数据 我需要向用户提示错误 并且try块内的else部分不会被执行 在哪里我错了我该如何纠正这个逻辑错误 pac
  • 从 Uri 类型 android 创建文件

    我正在尝试从图库中选择图像 然后将此图像转换为文件并通过 HttpPost 发送 但我总是FileNotFoundException 这是我的代码 选择照片 public void onActivityResult int requestC
  • 如何在 Flutter CustomPainter 中使用贝塞尔曲线绘制形状

    我正在尝试使用 flutter customPainter 库绘制下面的图片 我怎样才能画出这个形状 我的代码和结果 import package flutter material dart class CurvePainter exten
  • Xamarin SOAP Web 服务

    我在 Xamarin 中创建了一个便携式库项目 我想添加 Web 服务 但框架区域已关闭 这是什么原因呢 有没有人遇到过同样的问题 过期网址 111 111 11 11 8013 Services Kurum IdentityMngmnt
  • scala - 激发 Dataframe 的结果集

    我正在查询 mysql 表 val url jdbc mysql XXX XX XXX XX XX compute 1 amazonaws com 3306 pg partner val driver com mysql jdbc Driv
  • AWS DynamoDB 查询不过滤 BOOL 值

    我有一个使用 GUI 创建的用户表 并给出了电子邮件分区键 它是一个字符串 然后我使用 aws lambda 来做一个 putItem 它有 email string email protected cdn cgi l email prot
  • 嵌入模板上的任何指令均未使用属性绑定 ngif

    我正在 Angular Angular2 RC4 中创建一个简单的应用程序 但我发现很难在 Nodejs 中使用实时服务器运行该应用程序 我想帮助您了解如何解决 Chrome 控制台中出现的错误 Chrome 控制台出错 browser a
  • 检查一个数据帧是否是另一个数据帧的重新排序[重复]

    这个问题在这里已经有答案了 我有两个在两个不同场合生成的数据帧 但我怀疑它们是相等的 两者具有相同的行数和列数 从视觉上看它们似乎是相同的 除了行的排序方式不同 两者都没有可以重新排序的 ID 列 我能做的最好的事情就是通过process
  • 使用 RX Java 获取过滤器索引或第一个的优雅方法

    我正在练习 RX Java 想要获取与过滤器匹配的项目在数组中的位置 我看不到任何明显的方法来做到这一点 我正在考虑压缩范围和可迭代可观察之类的东西 但它很快就变得比 for 循环更加冗长和复杂 过去有mapWithIndex and zi