以下代码:
def a = [4,10,6].iterator().sort();
println a[1];
println a[1];
产生以下输出:
6
null
奇怪的是,似乎a[1]
正在改变列表。这记录在哪里?
答案 0 :(得分:6)
应该是
def a = [4,10,6].sort();
println a[1];
println a[1];
没有iterator()
!
然后它产生你期望的
6
6
它根本没有改变任何内容! [...].iterator().sort()
的结果属于java.util.ArrayList$ListItr
类型而不是您使用索引1(方法getAt()
被调用在Iterator
)所以你将迭代器移动2个元素,迭代器在最后位置。然后再次执行此操作并尝试从最后+ 1位置读取项目,因此它将返回null
。
Iterator.getAt()
的文档。