Delay to avoid cocurrent modification
Yes java already has that. What you're looking for is an Iterator:

Iterator&lt;Hand&gt; handIt = hands.iterator();
while (it.hasNext()) {
    Hand current = handIt.next();
    if (current.size() == 0) {
        handIt.remove();
    }
}


This can be simplified / changed to:

for (Iterator&lt;Hand&gt; handIt = hands.iterator(); handIt.hasNext(); ) {
    Hand current = handIt.next();
    // ...
}