All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.opsbears.webcomponents.immutable.ImmutableTreeSet Maven / Gradle / Ivy

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 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 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 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