首页 > 解决方案 > 无法将对象删除到 ArrayList

问题描述

我不知道如何从ArrayList. 我知道有删除,但就我而言,它更复杂。

我有一个(listsBlocksRemaining),其中包含有打印时ArrayList我放入另一个(listBlocksIntoRibbon)的对象。ArrayList然后,我想要的是,打印的对象应该从 listBlocksRemaining 中删除,有打印所以没有更多的剩余。

这是我的代码:

public void algoGlouton(Graphics g) {

    int offsetX = 13;
    int offsetY = 600;
    int widthAvailable= 0;
    int smallestHeight= 300;
    for(Bloc b : listsBlocksRemaining) {
        if(widthRemaining+b.getWidth () < ribbon.getWidth ()) {
            widthAvailable+= b.getWidth();
             g.setColor(b.getColor());
             g.fillRect(offsetX, offsetY-b.getHeight(), b.getWidth(), b.getHauteur());
             listBlocksIntoRibbon.add(b);
             b.setX(offsetX);
             b.setY(offsetY-b.getHauteur());
             offsetX += b.getLargeur();
        } else {
            for(Bloc b1 : listBlocksIntoRibbon) {
                if(b1.getHauteur() < smallestHeight) {
                    smallestHeight= b1.getHeight();
                }
            }
        }
    }
}

我试过这个:

for(int i = 0; i<listsBlocksRemaining.size();i++) {
        for(int j = 0; j<listBlocksIntoRibbon.size();j++) {
            if(listsBlocksRemaining.get(i) == listBlocksIntoRibbon.get(j)) {
                listsBlocksRemaining.remove(i);
            }
        }
}

和这个 :

for(int i = 0; i<listsBlocksRemaining.size();i++) {
        Bloc b = listsBlocksRemaining.get(i);
        if(listBlocksIntoRibbon.equals(b)) {
            listsBlocksRemaining.remove(b);
        }
}

亲切地

标签: javaarraylist

解决方案


您无需找到对象listBlocksRemaining即可将其删除。您可以从列表中删除对象:

for( Bloc bloc : listBlocksIntoRibbon )
  listBlocksRemaining.remove(bloc);

甚至:

listBlocksRemaining.removeAll( listBlocksIntoRibbon );

推荐阅读