你好,所以我有一个“列表照片”,我想从嵌套列表中获取值并放入“ List> grayPhoto”中,而我将其放入其中时,我需要在RBGpixels上使用我的方法.convertToGrayscale在第一个嵌套列表中。外部列表充满了我要读取的图片的行,因此这将使图片的像素成行和成列。
for (int i = 0; i < photo.size(); i++) {
List<GrayscalePixel> row = new ArrayList<>();
for (int j = 0; j < photo.get(0).size(); j++) {
row.add(photo.get(i).get(j).convertToGrayscale());
}
grayPhoto.add(row);}
我将如何转换它以便它使用流和lambda
photo.forEach(r -> r.forEach(e-> row.add(e.convertToGrayscale())));
这是我的尝试,但由于我无法找到一种方法来使该行到达嵌套列表(例如,值的数量等于图片的大小),所以无法工作使用了for循环。
不是直接将for循环转换为forEach
,而是在更高的抽象水平上查看for循环的作用。他们正在将列表中的每个元素转换为另一个元素。每当您看到这样的转换时,都应该调用map
。
List<List<GrayscalePixel>> grayscalePhoto =
photo.stream().map(x ->
x.stream().map(RGBpixel::convertToGrayscale).collect(Collectors.toList())
).collect(Collectors.toList());