private void sync ( Collection < FileDescriptor > target , Map < String , FileDescriptor > after ) { Map < String , FileDescriptor > before = getCache ( target ) ; Map < String , FileDescriptor > all = new HashMap <> ( ) ; all . putAll ( before ) ; all . putAll ( after ) ; for ( Map . Entry < String , FileDescriptor > entry : all . entrySet ( ) ) { String key = entry . getKey ( ) ; FileDescriptor fileDescriptor = entry . getValue ( ) ; boolean hasBefore = before . containsKey ( key ) ; boolean hasAfter = after . containsKey ( key ) ; if ( hasBefore && ! hasAfter ) { target . remove ( fileDescriptor ) ; } else if ( ! hasBefore && hasAfter ) { target . add ( fileDescriptor ) ; } } }
Sync the given target collection with the new state from the cache map .