从ArrayList中删除元素

时间:2012-11-17 13:47:26

标签: java arraylist

我正在尝试将'select'元素从hands [1]复制到hands [0]。 我可以使用以下代码成功完成此操作:

       for(Card card : hands[1].cards) {
          if (card.suit().ordinal() == 0){
             hands[0].addSingleCard(card);
             //hands[1].removeSingleCard(card);
             }
       }

不幸的是,我的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);
           }
       }

为什么这不起作用?

2 个答案:

答案 0 :(得分:6)

除了通过迭代器之外,您无法从正在迭代的集合中删除。所以你可以使用:

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();
    }
}

答案 1 :(得分:2)

我假设您在ConcurrentModificationException循环迭代时从集合中删除了for。 您应该使用iterator.remove