我不知道如何从ArrayList
中删除对象。我知道有删除,但就我而言,它更加复杂。
我有一个ArrayList
(listsBlocksRemaining),其中包含打印时放入另一个ArrayList
(listBlocksIntoRibbon)中的对象。然后,我想要的是应该从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);
}
}
私下
答案 0 :(得分:1)
您无需在listBlocksRemaining
中找到对象即可将其删除。您可以通过以下方式从列表中删除该对象:
for( Bloc bloc : listBlocksIntoRibbon )
listBlocksRemaining.remove(bloc);
甚至:
listBlocksRemaining.removeAll( listBlocksIntoRibbon );
答案 1 :(得分:0)
要在迭代集合时安全地将其从集合中删除,您应该使用迭代器。
尝试一下:
Iterator<Bloc> itr = listsBlocksRemaining.iterator();
while(itr.hasNext()){
Bloc b = itr.next();
...
listBlocksIntoRibbon.add(b);
itr.remove();
...
}