java - 从 ArrayList 中删除元素

标签 java 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”牌从 hands[1] 复制到 hands[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();
    }
}

关于java - 从 ArrayList 中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13431175/

相关文章:

java - FileWriter 循环遍历 Arraylist 但不写入文本文件

java - Java中ArrayList类的问题

java - "Block"ArrayList大小

java - 使用 arraylist 随机排列范围

java - 使用 NiftyGUI 的自定义 Controller

java - ProcessBuilder 无法访问相对文件夹位置

java - 如何使用 SNMP 监控 JVM 和应用程序

java - If 语句搜索特定字符

java - PHP 和 Clojure (Java) 代码之间的原始 MD5 base64 编码字符串对于某些字符的不同结果

java - 为什么此代码不生成随机代码?