将列表传递给另一个类进行迭代的最佳方法是什么

时间:2018-08-11 20:14:10

标签: java list arraylist

我正在为ArrayList创建ShapeList类,然后我希望将此列表传递给ShapeDrawer类(在ShapeList构造函数中实例化),以便可以在ShapeDrawer类中对其进行迭代。现在,在ShapeDrawer类的构造函数中,预期的类型应该是List还是ShapeList?如果我键入List,那么我将无法使用ShapeList方法,如果我将其键入ShapeList,则Eclipse表示将ShapeDrawer构造函数更改为List ...我也希望将此列表传递给其他类,但是存在相同的问题。非常感谢您的帮助!

public class ShapeList implements Iterator{ 

    List<ShapeConfigPair> shapeList = new ArrayList<>();

    public ShapeList(PaintCanvas canvas, ShapeConfigPair activeShape) 
    {
        // ...
        ShapeDrawer shapeDrawer = new ShapeDrawer(canvas, shapeList);
    }
}

4 个答案:

答案 0 :(得分:0)

它应该是列表,并且应该将其转换为ShapeDrawer。

答案 1 :(得分:0)

ShapeDrawer构造函数应为列表

答案 2 :(得分:0)

我不认为您理解implements Iterator在类声明中的含义,也不清楚您的问题的真正含义。

造成混乱的一个原因是,您定义了一个类ShapeList,该类具有名为shapeList的实例变量,但其类型为ArrayList。您正在将ArrayList传递给ShapeDrawer的构造函数,但这听起来像您想在ShapeDrawer中执行的操作是调用持有的ShapeList对象上的方法 ArrayList。因此,您应该传递this而不是传递ArrayList。

答案 3 :(得分:0)

您的课程应该扩展cd <extracted-folder>/tools/bin/ 。这很容易,因为没有什么事情要做。然后,您可以毫无问题地将其作为列表传递。

Iterator并不是要成为保存数据的主要类,而应该是用作遍历集合的临时适配器。