
io.jsync.impl.ConcurrentHashSet Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jsync.io Show documentation
Show all versions of jsync.io Show documentation
jsync.io is a non-blocking, event-driven networking framework for Java
/*
* Copyright (c) 2011-2013 The original author or authors
* ------------------------------------------------------
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Apache License v2.0 which accompanies this distribution.
*
* The Eclipse Public License is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* The Apache License v2.0 is available at
* http://www.opensource.org/licenses/apache2.0.php
*
* You may elect to redistribute this code under either of these licenses.
*/
package io.jsync.impl;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
/**
* @author Tim Fox
*/
public class ConcurrentHashSet implements Set {
private static final Object OBJ = new Object();
private final Map map;
public ConcurrentHashSet(int size) {
map = new ConcurrentHashMap<>(size);
}
public ConcurrentHashSet() {
map = new ConcurrentHashMap<>();
}
@Override
public int size() {
return map.size();
}
@Override
public boolean isEmpty() {
return map.isEmpty();
}
@Override
public boolean contains(Object o) {
return map.containsKey(o);
}
@Override
public Iterator iterator() {
return map.keySet().iterator();
}
@Override
public Object[] toArray() {
return map.keySet().toArray();
}
@Override
public T[] toArray(T[] a) {
return map.keySet().toArray(a);
}
@Override
public boolean add(E e) {
return map.put(e, OBJ) == null;
}
@Override
public boolean remove(Object o) {
return map.remove(o) == null;
}
@Override
public boolean containsAll(Collection> c) {
return map.keySet().containsAll(c);
}
@Override
public boolean addAll(Collection extends E> c) {
boolean changed = false;
for (E e : c) {
if (map.put(e, OBJ) == null) {
changed = true;
}
}
return changed;
}
@Override
public boolean retainAll(Collection> c) {
throw new UnsupportedOperationException();
}
@Override
public boolean removeAll(Collection> c) {
throw new UnsupportedOperationException();
}
@Override
public void clear() {
map.clear();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy