コードからわかるように、Javaでreverse()呼び出しCollections.reverseてリストを逆にします。
ただし、非変更コードには別のオプションがあります。を使用すると、 とlistIterator()でイテレータを取得して、リストをさかのぼることができます。hasPreviousprevious
// Our list
def a = [ 1, 2, 3, 4 ]
// Get a list iterator pointing at the end
def listIterator = a.listIterator( a.size() )
// Wrap the previous calls in another iterator
def iter = [ hasNext:{ listIterator.hasPrevious() },
next:{ listIterator.previous() } ] as Iterator
次に、次のことができます。
// Check the value of 1 element from the end of the list
assert iter[ 1 ] == 3
ただし、これはすべて内部の ArrayList であるため、次のようにするだけで、ほぼ確実に高速になります (コードが読みやすくなります)。
assert a[ 2 ] == 3
すべての逆転ではなく。明らかに、これは私が正しいことを確認するためにプロファイリングが必要になります...