如何在Java处理中创建行的ArrayList?

时间:2017-01-28 19:11:24

标签: java arraylist processing

我想在Java中创建一个处理行的arraylist。不是java行。

我的初始化arraylist的代码:

 private ArrayList <Line2D> lines;
 // constructors
 public IrregularPolygon()
{ 
   myPolygon = new ArrayList<Point2D.Double>();
   lines = new ArrayList<Line2D>();
}

制作线条并试图加入arraylist的代码:

 public void draw(PApplet marker)
{  

   if (myPolygon.size() >= 2)
   {
       for (int i = 0; i < myPolygon.size() - 1; i++)
       {
           lines[0] = marker.line((float)myPolygon.get(i).getX(), (float)myPolygon.get(i).getY(), (float)myPolygon.get(i + 1).getX(), (float)myPolygon.get(i + 1).getY());
           marker.line((float)myPolygon.get(0).getX(), (float)myPolygon.get(0).getY(), (float)myPolygon.get(i + 1).getX(), (float)myPolygon.get(i + 1).getY());
           if (myPolygon.size() > 4 && i > 2)
           {
              myPolygon.remove(myPolygon.get(i));
           }
       }
   }

}

由于某种原因,我不能做行[0] = ....它给我这个错误:表达式的类型必须是数组类型,但它解析为ArrayList

怎么了?

4 个答案:

答案 0 :(得分:1)

如果linesArrayList,那么您需要调用lines.add(...)lines.set(0, ...),具体取决于当时阵列的大小。

答案 1 :(得分:1)

因为您正在使用列表,所以使用add / set方法将行对象添加到列表中,并使用get方法从列表中读取相同内容。

答案 2 :(得分:0)

  

由于某种原因,我不能做行[0] = ....它给了我这个错误:表达式的类型必须是数组类型但它   解析为ArrayList

     

怎么了?

替换

lines[0] = marker.line((float)myPolygon.get(i).getX(), (float)myPolygon.get(i).getY(), (float)myPolygon.get(i + 1).getX(), (float)myPolygon.get(i + 1).getY());

lines.add(marker.line((float)myPolygon.get(i).getX(), (float)myPolygon.get(i).getY(), (float)myPolygon.get(i + 1).getX(), (float)myPolygon.get(i + 1).getY()));

答案 3 :(得分:0)

  

由于某种原因,我不能做行[0] = ....

就像其他人说过的那样,你试图在ArrayList对象上使用数组访问语法。那不行。

如果您要向ArrayList添加对象,则需要使用add()功能。

Line2D yourLine = //...
lines.add(yourLine);

然后,要获得一个对象,您将使用get()函数。请注意,您已使用myPolygon ArrayList

执行此操作

这条线要考虑的另一件事:

myPolygon.remove(myPolygon.get(i));

请注意,您从头开始迭代myPolygon ArrayList。因此索引按顺序为0,1,2 ......如果从myPolygon中删除对象,则所有后续对象都会向下移动一个索引。因此,当循环迭代时,您转到下一个索引,但是在删除之前您已跳过该索引处的对象。这可能会导致意外行为和其他错误。要解决此问题,您应该使用Iterator或以相反的顺序遍历ArrayList