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