在Groovy中向ArrayList动态添加元素

时间:2014-06-12 16:14:58

标签: java list arraylist groovy

我是Groovy的新手,尽管阅读了很多文章和问题,但我仍然不清楚发生了什么。 从我到目前为止所理解的,当您在Groovy中创建一个新数组时,底层类型是Java ArrayList。这意味着它应该是可调整大小的,您应该能够将其初始化为空,然后通过add方法动态添加元素,如下所示:

MyType[] list = []
list.add(new MyType(...))

这个编译,但它在运行时失败:没有方法签名:[LMyType; .add()适用于参数类型:( MyType)值:[MyType @ 383bfa16]

执行此操作的正确方法或正确类型是什么?

2 个答案:

答案 0 :(得分:52)

Groovy的方法是

def list = []
list << new MyType(...)

创建一个列表并使用重载的leftShift运算符来追加项目

有很多例子,请参阅Groovy docs on Lists

答案 1 :(得分:18)

您实际创建的内容:

MyType[] list = []

是大小为0的固定大小数组(非列表)。您可以使用以下命令创建大小为固定大小的数组(例如4):

MyType[] array = new MyType[4]

但当然没有添加方法。

如果您使用def创建列表,则可以使用Object创建此实例(您可以阅读有关def here的更多信息)。在这种情况下,[]会创建空ArrayList

因此,使用def list = [],您可以使用add() <{1}}方法追加新项目

ArrayList

或者使用超载左移运算符的更多groovy方式:

list.add(new MyType())