Concurrent HashSet : HashSet « Collections Data Structure « Java






Concurrent HashSet

/** *Copyright [2009-2010] [dennis zhuang(killme2008@gmail.com)] *Licensed under the Apache License, Version 2.0 (the "License"); *you may not use this file except in compliance with the License. *You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 *Unless required by applicable law or agreed to in writing, *software distributed under the License is distributed on an "AS IS" BASIS, *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, *either express or implied. See the License for the specific language governing permissions and limitations under the License *//** *Copyright [2009-2010] [dennis zhuang(killme2008@gmail.com)] *Licensed under the Apache License, Version 2.0 (the "License"); *you may not use this file except in compliance with the License. *You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 *Unless required by applicable law or agreed to in writing, *software distributed under the License is distributed on an "AS IS" BASIS, *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, *either express or implied. See the License for the specific language governing permissions and limitations under the License *///package com.google.code.yanf4j.util; import java.io.Serializable; import java.util.AbstractSet; import java.util.Collection; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; /** * A {@link ConcurrentHashMap}-backed {@link Set}. * * @author The Apache MINA Project (dev@mina.apache.org) * @version $Rev: 597692 $, $Date: 2007-11-23 08:56:32 -0700 (Fri, 23 Nov 2007) * $ */publicclass ConcurrentHashSet<E> extends MapBackedSet<E> { privatestaticfinallong serialVersionUID = 8518578988740277828L; public ConcurrentHashSet() { super(new ConcurrentHashMap<E, Boolean>()); } public ConcurrentHashSet(Collection<E> c) { super(new ConcurrentHashMap<E, Boolean>(), c); } @Override publicboolean add(E o) { Boolean answer = ((ConcurrentMap<E, Boolean>) map).putIfAbsent(o, Boolean.TRUE); return answer == null; } } /** * A {@link Map}-backed {@link Set}. * * @author The Apache MINA Project (dev@mina.apache.org) * @version $Rev: 597692 $, $Date: 2007-11-23 08:56:32 -0700 (Fri, 23 Nov 2007) * $ */class MapBackedSet<E> extends AbstractSet<E> implements Serializable { privatestaticfinallong serialVersionUID = -8347878570391674042L; protectedfinal Map<E, Boolean> map; public MapBackedSet(Map<E, Boolean> map) { this.map = map; } public MapBackedSet(Map<E, Boolean> map, Collection<E> c) { this.map = map; addAll(c); } @Override publicint size() { return map.size(); } @Override publicboolean contains(Object o) { return map.containsKey(o); } @Override public Iterator<E> iterator() { return map.keySet().iterator(); } @Override publicboolean add(E o) { return map.put(o, Boolean.TRUE) == null; } @Override publicboolean remove(Object o) { return map.remove(o) != null; } @Override publicvoid clear() { map.clear(); } } 








Related examples in the same category

1.Add values to HashSet
2.HashSet implementation of setHashSet implementation of set
3.Generic collection conversion: HashSet and ArrayList
4.Remove one set from another set
5.Remove element from HashSet
6.Find maximum element of Java HashSet
7.Find Minimum element of Java HashSet
8.Get Enumeration over Java HashSet
9.Get Synchronized Set from Java HashSet
10.Check if a particular element exists in Java HashSet
11.Copy all elements of Java HashSet to an Object Array
12.Get Size of Java HashSet
13.Iterate through elements of Java HashSet
14.Integer value set
15.Listing the Elements of a Collection(iterate over the elements of set or list)
16.Remove specified element from Java HashSet
17.Remove all elements from Java HashSet
18.Convert array to Set
19.Implements a HashSet where the objects given are stored in weak references
20.Convert an ArrayList to HashSet
21.Create an array containing the elements in a set
22.Duplicate elements are discarded
23.Convert Set into array
24.A memory-efficient hash set.
25.Compact HashSet
26.Coarse-grained hash set.
27.Concurrent hash set that allows the lock array to be resized.
28.A CompactHashSet implements the set interface more tightly in memory and more efficiently than Java's java.util.HashSet.
close