2010-03-22 31 views
2

我有以下结构:for (String playerName: players)如何在不修改旧数组的情况下向数组添加元素或创建新数组?

我想循环所有players加上一个更特殊的球员。但我不想通过向其添加新元素来修改players阵列。那么,我能做些什么?

我可以用players的所有元素加上一个元素来代替for (String playerName: players)中的players吗?

+0

您可以创建Iterable'的'实现,但代码是有点长,复杂。 – 2010-03-22 14:44:24

回答

8

移动循环的内容中的另一种方法,并调用它内外:

for (String playerName : players) { 
    handlePlayer(playerName); 
} 
handlePlayer(anotherPlayerName); 
+0

+1:这是最简单和恕我直言的最佳解决方案。没有用于创建新列表或更改旧列表的开销,它通过将代码移入单独的函数来改进代码。 – dbemerlin 2010-03-22 14:47:05

+0

@dbemerlin **开销**创建一个新列表?可能会变得很小(可能在Apache Commons中用单对象开销来实现) – 2010-03-22 14:51:06

3

我同意@Bozhos答案是最好的解决办法。

但是,如果你绝对要使用一个循环,你可以使用Iterables.concat()Google Collectons(与Collections.singleton()一起):

Iterable<String> allPlayersPlusOne=Iterables.concat(players,Collections.singleton(other)); 
for (String player : allPlayersPlusOne) { 
    //do stuff 
} 
+0

我应该知道Google Collections已经完成了它。 – 2010-03-22 14:58:10

相关问题