相关疑难解决方法(0)

lambda表达式是否在每次执行时都在堆上创建一个对象?

当我使用Java 8的新语法糖迭代一个集合时,例如

myStream.forEach(item -> {
  // do something useful
});
Run Code Online (Sandbox Code Playgroud)

这不等同于下面的"旧语法"片段吗?

myStream.forEach(new Consumer<Item>() {
  @Override
  public void accept(Item item) {
    // do something useful
  }
});
Run Code Online (Sandbox Code Playgroud)

这是否意味着Consumer每次迭代集合时都会在堆上创建一个新的匿名对象?这需要多少堆空间?它有什么性能影响?这是否意味着我在迭代大型多级数据结构时应该使用旧样式for循环?

java lambda java-8

166
推荐指数
2
解决办法
3万
查看次数

标签 统计

java ×1

java-8 ×1

lambda ×1