我有以下结构:for (String playerName: players)
。如何在不修改旧数组的情况下向数组添加元素或创建新数组?
我想循环所有players
加上一个更特殊的球员。但我不想通过向其添加新元素来修改players
阵列。那么,我能做些什么?
我可以用players
的所有元素加上一个元素来代替for (String playerName: players)
中的players
吗?
我有以下结构:for (String playerName: players)
。如何在不修改旧数组的情况下向数组添加元素或创建新数组?
我想循环所有players
加上一个更特殊的球员。但我不想通过向其添加新元素来修改players
阵列。那么,我能做些什么?
我可以用players
的所有元素加上一个元素来代替for (String playerName: players)
中的players
吗?
移动循环的内容中的另一种方法,并调用它内外:
for (String playerName : players) {
handlePlayer(playerName);
}
handlePlayer(anotherPlayerName);
+1:这是最简单和恕我直言的最佳解决方案。没有用于创建新列表或更改旧列表的开销,它通过将代码移入单独的函数来改进代码。 – dbemerlin 2010-03-22 14:47:05
@dbemerlin **开销**创建一个新列表?可能会变得很小(可能在Apache Commons中用单对象开销来实现) – 2010-03-22 14:51:06
我同意@Bozhos答案是最好的解决办法。
但是,如果你绝对要使用一个循环,你可以使用Iterables.concat()
从Google Collectons(与Collections.singleton()
一起):
Iterable<String> allPlayersPlusOne=Iterables.concat(players,Collections.singleton(other));
for (String player : allPlayersPlusOne) {
//do stuff
}
我应该知道Google Collections已经完成了它。 – 2010-03-22 14:58:10
您可以创建Iterable'的'实现,但代码是有点长,复杂。 – 2010-03-22 14:44:24