鉴于:
@Entity
public class Pixel {
@Id
Point position;
String color;
我像这样存储像素:
for (int row = 0; row < 20; row++) {
for (int col = 0; col < 20; col++) {
repository.save(new Pixel(new Point(row, col), "w3-flat-turquoise"));
}
}
这代表一个 20x20 的正方形
现在我需要使用布局显示该列表。
我可以轻松显示这样的正方形(工作):
现在我想从数据库中检索像素并显示它们......但我找不到合适的方法。
到目前为止,我有这个(不工作,因为最终的“我”不能改变):
VerticalLayout lines = new VerticalLayout();
HorizontalLayout line;
int width = 20;
List<Pixel> pixels = pixelRepository.findAll();
for(final int i=0;i<width;++i) {
line = new HorizontalLayout();
Stream<Pixel> pixelLine = pixels.stream().filter(pixel -> pixel.getPosition().x == i);
for(int j=0;j<width;++j) {
addNewColorButton(line, pixelLine.filter(pixel -> pixel.getPosition().y == j).findFirst().get().color);
}
lines.add(line);
}
add(lines);
什么是合适的算法来做到这一点?
具有最终变量的工作解决方案:
VerticalLayout lines = new VerticalLayout();
HorizontalLayout line;
int width = 20;
List<Pixel> pixels = pixelRepository.findAll();
for(int i=0;i<width;++i) {
int finalI = i;
line = new HorizontalLayout();
Supplier<Stream<Pixel>> pixelLine = () -> pixels.stream().filter(pixel -> pixel.getPosition().x == finalI);
for(int j=0;j<width;++j) {
int finalJ = j;
addNewColorButton(line, pixelLine.get().filter(pixel -> pixel.getPosition().y == finalJ).findFirst().get().color);
}
lines.add(line);
}
add(lines);
RISEBY
宝慕林4294392
相关分类