@ Override public boolean removeAll ( Collection < ? > c ) { final ReentrantLock lock = this . lock ; lock . lock ( ) ; try { Object [ ] elements = getArray ( ) ; int len = elements . length ; if ( len != 0 ) { // temp array holds those elements we know we want to keep int newlen = 0 ; Object [ ] temp = new Object [ len ] ; for ( int i = 0 ; i < len ; ++ i ) { Object element = elements [ i ] ; if ( ! c . contains ( element ) ) temp [ newlen ++ ] = element ; } if ( newlen != len ) { setArray ( Arrays . copyOf ( temp , newlen ) ) ; return true ; } } return false ; } finally { lock . unlock ( ) ; } }
Removes from this list all of its elements that are contained in the specified collection . This is a particularly expensive operation in this class because of the need for an internal temporary array .