Java array和ArrayList_java – Groovy- List,ArrayList和Object Array之间的区别

是的,数组是具有固定大小的数据结构.它被声明为具有描述它可以容纳哪些元素的类型,该类型是协变的(

see here for covariant vs contravariant).数组在运行时知道它的类型,并且尝试在数组中放置任何不适当的内容都会导致异常.

在Groovy中,由于低级且不灵活(固定大小),数组并不是真正的惯用语,因此支持它们与Java的互操作.通常,使用Groovy的人更喜欢列表而不是数组. Groovy确实试图消除差异,例如你可以在数组上使用size方法来获取元素的数量,即使在Java中你也需要

使用length属性.

(在Ruby中,与列表最相似的数据结构称为Array,因此在没有Java背景的情况下从Rails进入Groovy或Grails的人往往会因为混乱而继续使用命名法.)

java.util.List是一个接口,它描述了由不同类型的列表实现的基本列表操作.列表使用泛型类型参数来描述它们可以容纳的内容(在Groovy中类型是可选的).由于类型擦除,列表不协变.通用集合依赖于编译器来强制类型安全.

在使用文字语法(def mylist = [])创建列表时,在Groovy中,java.util.ArrayList是您获得的实现:

groovy:000> list = ['a', 'b', 'c']

===> []

groovy:000> list instanceof List

===> true

groovy:000> list.class

===> class java.util.ArrayList

groovy:000> list.class.array

===> false

groovy:000> list << 'd'

===> [d]

groovy:000> list[0]

===> a

要创建数组,您必须在声明中添加(type)[]:

groovy:000> stringarray = ['a', 'b', 'c'] as String[]

===> [a, b, c]

groovy:000> stringarray.class

===> class [Ljava.lang.String;

groovy:000> stringarray.class.array

===> true

groovy:000> stringarray << 'd'

ERROR groovy.lang.MissingMethodException:

No signature of method: [Ljava.lang.String;.leftShift() is applicable

for argument types: (java.lang.String) values: [d]

groovy:000> stringarray[0]

===> a

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值