以下代码:
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()
。