1

以下代码:

def a = [4,10,6].iterator().sort();
println a[1];
println a[1];

产生以下输出:

6
null

奇怪的是,它似乎a[1]正在改变列表。这是在哪里记录的?

4

1 回答 1

6

应该是

def a = [4,10,6].sort();
println a[1];
println a[1];

没有iterator()

然后它会产生你所期望的

6
6

它根本没有变异任何东西!的结果[...].iterator().sort()是类型java.util.ArrayList$ListItr,而不是将它与索引 1 一起使用(方法getAt()称为 at Iterator),因此您将迭代器移动 2 个元素并且迭代器位于最后一个位置。然后您再次执行此操作并尝试从 last + 1 位置读取项目,因此它正在返回null.

的文档Iterator.getAt()

于 2013-06-06T07:57:04.670 回答