以下代码:
def a = [4,10,6].iterator().sort();
println a[1];
println a[1];
产生以下输出:
6
null
奇怪的是,它似乎a[1]正在改变列表。这是在哪里记录的?
以下代码:
def a = [4,10,6].iterator().sort();
println a[1];
println a[1];
产生以下输出:
6
null
奇怪的是,它似乎a[1]正在改变列表。这是在哪里记录的?
应该是
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()。