有时您在 Java 中有一个混合集合。一个简单的例子是具有List
解决方案:经典 Java
使用标准 Java foreach 循环解决问题的一种方法。
@Test |
这种方法的好处是我们只对数字列表迭代一次。缺点是它非常冗长,并且需要强制转换。
解决方案:Java 16 — instanceof 的模式匹配
@Test |
这样做的好处是我们只迭代一次数字列表,并且没有不安全的转换。缺点是它仍然很冗长。这将在 Java 17 中通过模式匹配进行切换。
解决方案:Eclipse Collections selectInstanceOf
@Test |
这种方法的优点是非常简洁。缺点是它需要对数字列表进行多次迭代。
解决方案:Eclipse Collections CaseProcedure
@Test |
这种方法的优点是它相对简洁,只需要遍历数字列表一次。缺点是它需要显式和不安全的强制转换。
解决方案:Java 17 — Switch 中的模式匹配
当 Java 17 发布时,我们可以解决在 switch 中使用模式匹配的问题。
@Test |
这种方法的优点是简洁、清晰和单遍迭代。我想不出任何缺点。
实验:Java 17 — Switch、Var 和 Eclipse 集合中的记录、模式匹配注入
这纯粹是我在安装并运行 Java 17 EA 后添加的思想实验。我想看看在 Switch 中使用 Java 记录和 Eclipse Collections injectInto 和 Pattern Matching 可以做什么。
@Test |
一些想法
根据类型过滤混合 Java 集合可能会很痛苦,但今天作为 Java 开发人员,我们有一些选择。Eclipse Collections 提供了当今最简洁的选项。该selectInstancesOf方法结合了过滤和更具体的返回类型,缺点是需要对每个子类型进行单独的迭代。CaseProcedure提供了当今最简洁、最高效的选项,但缺点是仍然需要cast。当 Java 17 与 Switch 中的模式匹配一起发布时,可用选项将真正得到改进。Java 17 将在发布时提供最简洁和高性能的选项。