src/share/classes/java/util/concurrent/ConcurrentHashMap.java

Print this page
rev 7682 : 8021591: Additional explicit null checks
Reviewed-by: duke


  33  * http://creativecommons.org/publicdomain/zero/1.0/
  34  */
  35 
  36 package java.util.concurrent;
  37 
  38 import java.io.ObjectStreamField;
  39 import java.io.Serializable;
  40 import java.lang.reflect.ParameterizedType;
  41 import java.lang.reflect.Type;
  42 import java.util.AbstractMap;
  43 import java.util.Arrays;
  44 import java.util.Collection;
  45 import java.util.Comparator;
  46 import java.util.ConcurrentModificationException;
  47 import java.util.Enumeration;
  48 import java.util.HashMap;
  49 import java.util.Hashtable;
  50 import java.util.Iterator;
  51 import java.util.Map;
  52 import java.util.NoSuchElementException;

  53 import java.util.Set;
  54 import java.util.Spliterator;
  55 import java.util.concurrent.ConcurrentMap;
  56 import java.util.concurrent.ForkJoinPool;
  57 import java.util.concurrent.atomic.AtomicReference;
  58 import java.util.concurrent.locks.LockSupport;
  59 import java.util.concurrent.locks.ReentrantLock;
  60 import java.util.function.BiConsumer;
  61 import java.util.function.BiFunction;
  62 import java.util.function.BinaryOperator;
  63 import java.util.function.Consumer;
  64 import java.util.function.DoubleBinaryOperator;
  65 import java.util.function.Function;
  66 import java.util.function.IntBinaryOperator;
  67 import java.util.function.LongBinaryOperator;
  68 import java.util.function.ToDoubleBiFunction;
  69 import java.util.function.ToDoubleFunction;
  70 import java.util.function.ToIntBiFunction;
  71 import java.util.function.ToIntFunction;
  72 import java.util.function.ToLongBiFunction;


4394                     sb.append(e == this ? "(this Collection)" : e);
4395                     if (!it.hasNext())
4396                         break;
4397                     sb.append(',').append(' ');
4398                 }
4399             }
4400             return sb.append(']').toString();
4401         }
4402 
4403         public final boolean containsAll(Collection<?> c) {
4404             if (c != this) {
4405                 for (Object e : c) {
4406                     if (e == null || !contains(e))
4407                         return false;
4408                 }
4409             }
4410             return true;
4411         }
4412 
4413         public final boolean removeAll(Collection<?> c) {

4414             boolean modified = false;
4415             for (Iterator<E> it = iterator(); it.hasNext();) {
4416                 if (c.contains(it.next())) {
4417                     it.remove();
4418                     modified = true;
4419                 }
4420             }
4421             return modified;
4422         }
4423 
4424         public final boolean retainAll(Collection<?> c) {

4425             boolean modified = false;
4426             for (Iterator<E> it = iterator(); it.hasNext();) {
4427                 if (!c.contains(it.next())) {
4428                     it.remove();
4429                     modified = true;
4430                 }
4431             }
4432             return modified;
4433         }
4434 
4435     }
4436 
4437     /**
4438      * A view of a ConcurrentHashMap as a {@link Set} of keys, in
4439      * which additions may optionally be enabled by mapping to a
4440      * common value.  This class cannot be directly instantiated.
4441      * See {@link #keySet() keySet()},
4442      * {@link #keySet(Object) keySet(V)},
4443      * {@link #newKeySet() newKeySet()},
4444      * {@link #newKeySet(int) newKeySet(int)}.




  33  * http://creativecommons.org/publicdomain/zero/1.0/
  34  */
  35 
  36 package java.util.concurrent;
  37 
  38 import java.io.ObjectStreamField;
  39 import java.io.Serializable;
  40 import java.lang.reflect.ParameterizedType;
  41 import java.lang.reflect.Type;
  42 import java.util.AbstractMap;
  43 import java.util.Arrays;
  44 import java.util.Collection;
  45 import java.util.Comparator;
  46 import java.util.ConcurrentModificationException;
  47 import java.util.Enumeration;
  48 import java.util.HashMap;
  49 import java.util.Hashtable;
  50 import java.util.Iterator;
  51 import java.util.Map;
  52 import java.util.NoSuchElementException;
  53 import java.util.Objects;
  54 import java.util.Set;
  55 import java.util.Spliterator;
  56 import java.util.concurrent.ConcurrentMap;
  57 import java.util.concurrent.ForkJoinPool;
  58 import java.util.concurrent.atomic.AtomicReference;
  59 import java.util.concurrent.locks.LockSupport;
  60 import java.util.concurrent.locks.ReentrantLock;
  61 import java.util.function.BiConsumer;
  62 import java.util.function.BiFunction;
  63 import java.util.function.BinaryOperator;
  64 import java.util.function.Consumer;
  65 import java.util.function.DoubleBinaryOperator;
  66 import java.util.function.Function;
  67 import java.util.function.IntBinaryOperator;
  68 import java.util.function.LongBinaryOperator;
  69 import java.util.function.ToDoubleBiFunction;
  70 import java.util.function.ToDoubleFunction;
  71 import java.util.function.ToIntBiFunction;
  72 import java.util.function.ToIntFunction;
  73 import java.util.function.ToLongBiFunction;


4395                     sb.append(e == this ? "(this Collection)" : e);
4396                     if (!it.hasNext())
4397                         break;
4398                     sb.append(',').append(' ');
4399                 }
4400             }
4401             return sb.append(']').toString();
4402         }
4403 
4404         public final boolean containsAll(Collection<?> c) {
4405             if (c != this) {
4406                 for (Object e : c) {
4407                     if (e == null || !contains(e))
4408                         return false;
4409                 }
4410             }
4411             return true;
4412         }
4413 
4414         public final boolean removeAll(Collection<?> c) {
4415             Objects.requireNonNull(c);
4416             boolean modified = false;
4417             for (Iterator<E> it = iterator(); it.hasNext();) {
4418                 if (c.contains(it.next())) {
4419                     it.remove();
4420                     modified = true;
4421                 }
4422             }
4423             return modified;
4424         }
4425 
4426         public final boolean retainAll(Collection<?> c) {
4427             Objects.requireNonNull(c);
4428             boolean modified = false;
4429             for (Iterator<E> it = iterator(); it.hasNext();) {
4430                 if (!c.contains(it.next())) {
4431                     it.remove();
4432                     modified = true;
4433                 }
4434             }
4435             return modified;
4436         }
4437 
4438     }
4439 
4440     /**
4441      * A view of a ConcurrentHashMap as a {@link Set} of keys, in
4442      * which additions may optionally be enabled by mapping to a
4443      * common value.  This class cannot be directly instantiated.
4444      * See {@link #keySet() keySet()},
4445      * {@link #keySet(Object) keySet(V)},
4446      * {@link #newKeySet() newKeySet()},
4447      * {@link #newKeySet(int) newKeySet(int)}.