我正在尝试将'select'元素从手[1]复制到hands [0].我可以使用以下代码成功执行此操作:
for(Card card : hands[1].cards) {
if (card.suit().ordinal() == 0){
hands[0].addSingleCard(card);
//hands[1].removeSingleCard(card);
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,我的removeSingleCard方法不能按我的预期工作.随着它的注释,for-each循环成功地将所有'Club'牌从手[1]复制到手牌[0].我希望removeSingleCard方法会在复制之后从手[1]中删除每个'Club'卡.
public void addSingleCard(Card card){
if(card!= null){
cards.add(card);
}
}
public void removeSingleCard(Card c){
if(c!= null){
cards.remove(c);
}
}
Run Code Online (Sandbox Code Playgroud)
任何想法为什么这不起作用?
除了通过迭代器之外,您无法从正在迭代的集合中删除.所以你可以使用:
for (Iterator<Card> iterator = hands[1].cards.iterator();
iterator.hasNext(); ) {
Card card = iterator.next();
if (card.suit().ordinal() == 0) {
hands[0].addSingleCard(card); // Or hands[0].cards.add(card);
iterator.remove();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
143 次 |
| 最近记录: |