Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import org.spongepowered.api.util.Identifiable;
- import javax.annotation.Nonnull;
- import java.util.Collection;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.Set;
- import java.util.UUID;
- public class IdentifiableMap<T> implements Map<Identifiable, T> {
- private final Map<UUID, T> delegate;
- public IdentifiableMap() {
- this(new HashMap<>());
- }
- public IdentifiableMap(Map<UUID, T> delegate) {
- this.delegate = delegate;
- }
- @Override
- public int size() {
- return delegate.size();
- }
- @Override
- public boolean isEmpty() {
- return delegate.isEmpty();
- }
- @Override
- public boolean containsKey(Object o) {
- return o instanceof Identifiable && delegate.containsKey(((Identifiable) o).getUniqueId());
- }
- @Override
- public boolean containsValue(Object o) {
- return delegate.containsValue(o);
- }
- @Override
- public T get(Object o) {
- return o instanceof Identifiable ? delegate.get(((Identifiable) o).getUniqueId()) : null;
- }
- @Override
- public T put(Identifiable identifiable, T t) {
- return delegate.put(identifiable.getUniqueId(), t);
- }
- @Override
- public T remove(Object o) {
- return o instanceof Identifiable ? delegate.remove(((Identifiable) o).getUniqueId()) : null;
- }
- @Override
- public void putAll(@Nonnull Map<? extends Identifiable, ? extends T> map) {
- for (Entry<? extends Identifiable, ? extends T> entry : map.entrySet()) {
- put(entry.getKey(), entry.getValue());
- }
- }
- @Override
- public void clear() {
- delegate.clear();
- }
- @Override
- public @Nonnull Set<Identifiable> keySet() {
- throw new UnsupportedOperationException();
- }
- @Override
- public @Nonnull Collection<T> values() {
- return delegate.values();
- }
- @Override
- public @Nonnull Set<Entry<Identifiable, T>> entrySet() {
- throw new UnsupportedOperationException();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment