在 Java 5 及更高版本中迭代 java.util.Map 的所有键/值对的最简单方法是什么?
在 Java 5 及更高版本中迭代 java.util.Map 的所有键/值对的最简单方法是什么?
What is the easiest way to iterate over all the key/value pairs of a java.util.Map in Java 5 and higher?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
假设
K
是您的键类型,V
是您的值类型:此版本适用于支持泛型的每个 Java 版本(即 Java 5 及更高版本)。
Java 10 通过使用
var
推断变量类型来简化这一点:虽然前两个选项在字节码级别基本上是等效的,Java 8 也引入了
forEach
,它使用 lambdas* 并且工作方式略有不同。 它为每个条目调用 lambda,如果没有优化的话,这可能会增加这些调用的一些开销:* 技术上
BiConsumer
也可以使用普通类来实现,但是它旨在用于 lambda,并且主要与 lambda 一起使用。Assuming
K
is your key type andV
is your value type:This version works with every Java version that supports generic (i.e. Java 5 and up).
Java 10 simplified that by letting variable types be inferred using
var
:While the previous two options are basically equivalent at the bytecode level, Java 8 also introduced
forEach
which uses lambdas* and works slightly difference. It invokes the lambda for each entry, which might add some overhead of those calls, if it's not optimized away:* technically the
BiConsumer
can also be implemented using a normal class, but it's intended for and mostly used with lambdas.虽然 Joachim Sauer 对于 Java 5 来说是正确的,但从 Java 10 开始有一个更简单的选项:
Java 8 引入了:
While Joachim Sauer is correct for Java 5, there is a simpler option available starting at Java 10:
and Java 8 introduced: