Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在for循环中使用生成器模式_Java_Loops_Builder - Fatal编程技术网

Java 在for循环中使用生成器模式

Java 在for循环中使用生成器模式,java,loops,builder,Java,Loops,Builder,所以我遇到了一些代码,看起来像这样: Polygon polygon = Polygon.Builder() .addVertex(new Point(38.085255f, -122.734590f)) .addVertex(new Point(37.513400f, -122.726350f)) .addVertex(new Point(37.044617f, -122.413239f))

所以我遇到了一些代码,看起来像这样:

Polygon polygon = Polygon.Builder()
                .addVertex(new Point(38.085255f, -122.734590f))
                .addVertex(new Point(37.513400f, -122.726350f))
                .addVertex(new Point(37.044617f, -122.413239f))
                .addVertex(new Point(37.121307f, -121.765046f))
                .addVertex(new Point(37.497051f, -121.707368f))
                .addVertex(new Point(37.812351f, -121.905122f))
                .addVertex(new Point(37.899094f, -121.740327f))
                .addVertex(new Point(37.987900f, -121.877656f))
                .addVertex(new Point(37.886089f, -122.034211f))
                .addVertex(new Point(38.085247f, -122.366548f))
                .build();
这只需将带有浮动坐标的点添加到数组中,然后在最后构建多边形。无论如何,我的问题是,是否有任何简单的方法可以让我在不改变过程基本结构的情况下循环这个addVertex过程

我尝试做的基本想法是:

for(int i = 0; i < vertices.length; i++) {
    polygon.Builder.addVertex(new Point(vertices[i].getX(), vertices[i].getY());
}
polygon.Builder().build();
for(int i=0;i

我试图尽可能地概括这个例子,希望在这个过程中没有增加任何混乱。

使用这个方法链接生成器模式,关键是要认识到每次调用
addVertex
都会返回一个(新的)若要循环此操作,您可以在每次迭代中使用新的生成器重复覆盖当前生成器

PolygonBuilder builder = Polygon.Builder();

for (int i = 0; i < vertices.length; i++) {
    builder = builder.addVertex(new Point(vertices[i].getX(), vertices[i].getY());
}

Polygon polygon = builder.build();
PolygonBuilder=Polygon.builder();
对于(int i=0;i

无论每次
addVertex
调用是否返回一个新的生成器,或者每次是否返回相同的生成器,这都是有效的。

是。这应该可以工作。调用不必在同一行上进行。因此,它将在循环中工作

System.out.println(new StringBuilder().append(1).append(2).append(3).toString());

StringBuilder sb = new StringBuilder();
sb.append(1);
sb.append(2);
sb.append(3);
System.out.println(sb.toString());
这和

StringBuilder sb = new StringBuilder();
for(int i=1; i<=3; i++) {
  sb.append(i);
}
System.out.println(sb.toString());
StringBuilder sb=新建StringBuilder();

对于(int i=1;iIt实际上取决于坐标来自何处。不过,似乎您已经找到了解决问题的方法-您只是在寻找实现吗?@shekharsuman收到了,谢谢