次のようなJava 8の新しい構文シュガーを使用してコレクションを反復処理すると、
myStream.forEach(item -> {
// do something useful
});
これは、以下の「古い構文」スニペットと同等ではありませんか?
myStream.forEach(new Consumer<Item>() {
@Override
public void accept(Item item) {
// do something useful
}
});
これはConsumer
、コレクションを反復処理するたびに、新しい匿名オブジェクトがヒープ上に作成されることを意味しますか?これにはどのくらいのヒープ領域が必要ですか?パフォーマンスにどのような影響がありますか?大規模なマルチレベルのデータ構造を反復処理するときに、ループに古いスタイルを使用する必要があるということですか?