
com.opsbears.webcomponents.immutable.ImmutableTreeSet Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of immutable Show documentation
Show all versions of immutable Show documentation
Immutable map, list, etc implementations
The newest version!
package com.opsbears.webcomponents.immutable;
import javax.annotation.Nonnull;
import javax.annotation.ParametersAreNonnullByDefault;
import java.util.*;
import java.util.function.Predicate;
/**
*
* @param
*
* TODO more efficient set copying. (See TreeSet source code.)
*/
@ParametersAreNonnullByDefault
public class ImmutableTreeSet implements ImmutableSortedSet {
private final SortedSet backingSet;
public ImmutableTreeSet() {
super();
backingSet = Collections.unmodifiableSortedSet(new TreeSet<>());
}
public ImmutableTreeSet(Collection newSet) {
super();
backingSet = Collections.unmodifiableSortedSet(new TreeSet<>(newSet));
}
public ImmutableTreeSet(SortedSet newSet) {
super();
backingSet = Collections.unmodifiableSortedSet(new TreeSet<>(newSet));
}
@Override
public Comparator super E> comparator() {
return backingSet.comparator();
}
@Nonnull
public ImmutableSortedSet subSet(
E var1,
E var2
) {
return new ImmutableTreeSet<>(backingSet.subSet(var1, var2));
}
@Nonnull
public ImmutableSortedSet headSet(E var1) {
return new ImmutableTreeSet<>(backingSet.headSet(var1));
}
@Nonnull
public ImmutableSortedSet tailSet(E var1) {
return new ImmutableTreeSet<>(backingSet.tailSet(var1));
}
@Override
public E first() {
return backingSet.first();
}
@Override
public E last() {
return backingSet.last();
}
@Override
public ImmutableSet withAdd(E var1) {
TreeSet newSet = new TreeSet<>(this);
newSet.add(var1);
return new ImmutableTreeSet<>(newSet);
}
@Override
public ImmutableSet withRemove(Object var1) {
TreeSet newSet = new TreeSet<>(this);
//noinspection SuspiciousMethodCalls
newSet.remove(var1);
return new ImmutableTreeSet<>(newSet);
}
@Override
public ImmutableSet withAddAll(Collection extends E> var1) {
TreeSet newSet = new TreeSet<>(this);
newSet.addAll(var1);
return new ImmutableTreeSet<>(newSet);
}
@Override
public ImmutableSet withRetainAll(Collection> var1) {
TreeSet newSet = new TreeSet<>(this);
newSet.retainAll(var1);
return new ImmutableTreeSet<>(newSet);
}
@Override
public ImmutableSet withRemoveAll(Collection> var1) {
TreeSet newSet = new TreeSet<>(this);
//noinspection SuspiciousMethodCalls
newSet.removeAll(var1);
return new ImmutableTreeSet<>(newSet);
}
@Override
public ImmutableCollection withRemoveIf(Predicate super E> var1) {
TreeSet newSet = new TreeSet<>(this);
newSet.removeIf(var1);
return new ImmutableTreeSet<>(newSet);
}
@Override
public ImmutableSet withClear() {
return new ImmutableTreeSet<>();
}
@Override
public int size() {
return backingSet.size();
}
@Override
public boolean isEmpty() {
return backingSet.isEmpty();
}
@Override
public boolean contains(Object o) {
return backingSet.contains(o);
}
@Override
@Nonnull
public Iterator iterator() {
return backingSet.iterator();
}
@Override
@Nonnull
public Object[] toArray() {
return backingSet.toArray();
}
@Override
@Nonnull
public T[] toArray(T[] ts) {
//noinspection SuspiciousToArrayCall
return backingSet.toArray(ts);
}
@Override
public boolean containsAll(Collection> collection) {
return backingSet.containsAll(collection);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy