在Java中寻找ConcurrentHashSet吗?


分类:
Java


269人阅读
评论(0)
收藏
举报

方法一:Collections.newSetFromMap(new ConcurrentHashMap<Object,Boolean>())

方法二:(引用自Apache Mina,位置org.apache.mina.util.ConcurrentHashSet)

[java] view plaincopyprint?

  1. packageorg.apache.mina.util;
  2. importjava.util.Collection;
  3. importjava.util.Set;
  4. importjava.util.concurrent.ConcurrentHashMap;
  5. importjava.util.concurrent.ConcurrentMap;
  6. /**
  7. *A{@linkConcurrentHashMap}-backed{@linkSet}.
  8. *
  9. *@author<ahref="http://mina.apache.org"mce_href="http://mina.apache.org">ApacheMINAProject</a>
  10. */
  11. publicclassConcurrentHashSet<E>extendsMapBackedSet<E>{
  12. privatestaticfinallongserialVersionUID=8518578988740277828L;
  13. publicConcurrentHashSet(){
  14. super(newConcurrentHashMap<E,Boolean>());
  15. }
  16. publicConcurrentHashSet(Collection<E>c){
  17. super(newConcurrentHashMap<E,Boolean>(),c);
  18. }
  19. @Override
  20. publicbooleanadd(Eo){
  21. Booleananswer=((ConcurrentMap<E,Boolean>)map).putIfAbsent(o,Boolean.TRUE);
  22. returnanswer==null;
  23. }
  24. }