当我使用Java 8的新语法糖遍历集合时,例如
myStream.forEach(item -> {
// do something useful
});
这不等同于下面的“旧语法”代码段吗?
myStream.forEach(new Consumer<Item>() {
@Override
public void accept(Item item) {
// do something useful
}
});
这是否意味着Consumer
每次迭代集合时都会在堆上创建一个新的匿名对象?这需要多少堆空间?它对性能有什么影响?这是否意味着在遍历大型多级数据结构时,我宁愿将旧样式用于循环?