繁体   English   中英

从ArrayList中删除元素

[英]Deleting element from ArrayList

我试图将“选择”元素从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'卡从hand [1]复制到hand [0]。 我希望removeSingleCard方法可以在复制后从手中删除每张“俱乐部”卡[1]。

       public void addSingleCard(Card card){
           if(card!= null){
             cards.add(card);
           }
       }

       public void removeSingleCard(Card c){
           if(c!= null){
             cards.remove(c);
           }
       }

任何想法为什么这不起作用?

除了通过迭代器,您无法从要迭代的集合中删除。 因此,您可以使用:

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

我假设您收到一个ConcurrentModificationException因为您是在for循环中进行迭代时从集合中删除。
您应该使用iterator.remove

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM