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)}.
|