使用Groovy更改数组中对象位置的最有效方法

时间:2013-02-09 07:31:53

标签: groovy

假设我有以下内容:

['a', 'b', 'c', 'd', 'e', 'f', 'g']

我必须将其更改为:

['a', 'b', 'f', 'c', 'd', 'e', 'g']

最有效的方法是什么?

更新:我实际上需要移位元素,而不是交换元素。请注意上面我的示例的更改。

1 个答案:

答案 0 :(得分:5)

我不知道“有效”是指“以清晰/可读的方式”,还是指你的表现。如果它是前者并且您想要就地进行替换,则可以使用方便的[]列表运算符:

def arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g']

arr[2, 5] = arr[5, 2]

assert arr == ['a', 'b', 'f', 'd', 'e', 'c', 'g']

更新:问题不在于交换两个元素,而在于将元素移动到另一个位置。要在适当的位置执行此操作,您可以使用一些Java ArrayList方法,这些方法允许您添加和删除给定位置的元素。我认为这很可读:

def arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g']

arr.add(2, arr.remove(5))

assert arr == ['a', 'b', 'f', 'c', 'd', 'e', 'g']