
net.digitalid.utility.immutable.entry.ReadOnlyEntrySet Maven / Gradle / Ivy
The newest version!
package net.digitalid.utility.immutable.entry;
import java.util.Collection;
import java.util.Map;
import java.util.Set;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import net.digitalid.utility.annotations.method.Pure;
import net.digitalid.utility.annotations.ownership.Capturable;
import net.digitalid.utility.annotations.ownership.Captured;
import net.digitalid.utility.annotations.ownership.NonCaptured;
import net.digitalid.utility.annotations.ownership.Shared;
import net.digitalid.utility.annotations.parameter.Modified;
import net.digitalid.utility.annotations.parameter.Unmodified;
import net.digitalid.utility.circumfixes.Brackets;
import net.digitalid.utility.functional.iterables.CollectionIterable;
import net.digitalid.utility.validation.annotations.math.NonNegative;
import net.digitalid.utility.validation.annotations.type.ReadOnly;
/**
* This class implements a read-only entry set that returns an iterator which returns read-only entries.
*/
@ReadOnly
public class ReadOnlyEntrySet implements Set>, CollectionIterable> {
/* -------------------------------------------------- Fields -------------------------------------------------- */
private final @Shared @Nonnull Set> set;
/* -------------------------------------------------- Constructors -------------------------------------------------- */
protected ReadOnlyEntrySet(@Shared @Unmodified @Nonnull Set> set) {
this.set = set;
}
/**
* Returns a new read-only entry set that is backed by the given set.
*/
@Pure
public static @Nonnull ReadOnlyEntrySet with(@Shared @Unmodified @Nonnull Set> set) {
return new ReadOnlyEntrySet<>(set);
}
/* -------------------------------------------------- Modified Operations -------------------------------------------------- */
@Pure
@Override
public @Capturable @Nonnull ReadOnlyEntrySetIterator iterator() {
return new ReadOnlyEntrySetIterator<>(set.iterator());
}
/* -------------------------------------------------- Delegated Operations -------------------------------------------------- */
@Pure
@Override
public @NonNegative int size() {
return set.size();
}
@Pure
@Override
public boolean isEmpty() {
return set.isEmpty();
}
@Pure
@Override
public boolean contains(@NonCaptured @Unmodified @Nullable Object object) {
return set.contains(object);
}
@Pure
@Override
public boolean containsAll(@NonCaptured @Unmodified @Nonnull Collection> collection) {
return set.containsAll(collection);
}
@Pure
@Override
public @Capturable @Nonnull Object[] toArray() {
return set.toArray();
}
@Pure
@Override
@SuppressWarnings("SuspiciousToArrayCall")
public @Capturable @Nonnull T[] toArray(@NonCaptured @Modified @Nonnull T[] array) {
return set.toArray(array);
}
/* -------------------------------------------------- Unsupported Operations -------------------------------------------------- */
@Pure
@Override
public final boolean add(@Captured Map.@Nonnull Entry element) {
throw new UnsupportedOperationException();
}
@Pure
@Override
public final boolean addAll(@NonCaptured @Unmodified @Nonnull Collection extends Map.@Nonnull Entry> collection) {
throw new UnsupportedOperationException();
}
@Pure
@Override
public final boolean remove(@NonCaptured @Unmodified @Nullable Object object) {
throw new UnsupportedOperationException();
}
@Pure
@Override
public final boolean removeAll(@NonCaptured @Unmodified @Nonnull Collection> collection) {
throw new UnsupportedOperationException();
}
@Pure
@Override
public final boolean retainAll(@NonCaptured @Unmodified @Nonnull Collection> collection) {
throw new UnsupportedOperationException();
}
@Pure
@Override
public final void clear() {
throw new UnsupportedOperationException();
}
/* -------------------------------------------------- To String -------------------------------------------------- */
@Override
public String toString() {
return join(Brackets.CURLY);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy