ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/loops/ConcurrentHashSet.java
Revision: 1.4
Committed: Wed Dec 31 17:00:58 2014 UTC (9 years, 3 months ago) by jsr166
Branch: MAIN
CVS Tags: HEAD
Changes since 1.3: +1 -1 lines
Log Message:
lexicographic import order

File Contents

# User Rev Content
1 dl 1.1 /*
2     * Written by Doug Lea with assistance from members of JCP JSR-166
3     * Expert Group and released to the public domain, as explained at
4 jsr166 1.3 * http://creativecommons.org/publicdomain/zero/1.0/
5 dl 1.1 */
6    
7     // A set wrapper over CHM for testing
8    
9 jsr166 1.4 import java.io.*;
10 dl 1.1 import java.util.*;
11     import java.util.concurrent.*;
12    
13     public class ConcurrentHashSet<E> extends AbstractSet<E>
14     implements Set<E>, Serializable {
15    
16     private final ConcurrentHashMap<E, Boolean> m; // The backing map
17     private transient Set<E> keySet; // Its keySet
18 jsr166 1.2
19     public ConcurrentHashSet() {
20 dl 1.1 m = new ConcurrentHashMap<E, Boolean>();
21     keySet = m.keySet();
22     }
23     public ConcurrentHashSet(int initialCapacity) {
24     m = new ConcurrentHashMap<E, Boolean>(initialCapacity);
25     keySet = m.keySet();
26     }
27 jsr166 1.2 public ConcurrentHashSet(int initialCapacity, float loadFactor,
28 dl 1.1 int concurrencyLevel) {
29 jsr166 1.2 m = new ConcurrentHashMap<E, Boolean>(initialCapacity, loadFactor,
30 dl 1.1 concurrencyLevel);
31     keySet = m.keySet();
32     }
33    
34     public int size() { return m.size(); }
35     public boolean isEmpty() { return m.isEmpty(); }
36     public boolean contains(Object o) { return m.containsKey(o); }
37     public Iterator<E> iterator() { return keySet.iterator(); }
38     public Object[] toArray() { return keySet.toArray(); }
39     public <T> T[] toArray(T[] a) { return keySet.toArray(a); }
40     public boolean add(E e) {
41     return m.put(e, Boolean.TRUE) == null;
42     }
43     public boolean remove(Object o) { return m.remove(o) != null; }
44    
45     public boolean removeAll(Collection<?> c) {
46     return keySet.removeAll(c);
47     }
48     public boolean retainAll(Collection<?> c) {
49     return keySet.retainAll(c);
50     }
51     public void clear() { m.clear(); }
52     public boolean equals(Object o) { return keySet.equals(o); }
53     public int hashCode() { return keySet.hashCode(); }
54    
55     private static final long serialVersionUID = 2454657854757543876L;
56    
57     private void readObject(java.io.ObjectInputStream s)
58     throws IOException, ClassNotFoundException
59     {
60     s.defaultReadObject();
61     keySet = m.keySet();
62     }
63     }