![JAR search and dependency download from the Maven repository](/logo.png)
org.jhotdraw8.icollection.facade.SequencedSetFacade Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of org.jhotdraw8.icollection Show documentation
Show all versions of org.jhotdraw8.icollection Show documentation
JHotDraw8 Immutable Collections
The newest version!
/*
* @(#)SequencedSetFacade.java
* Copyright © 2023 The authors and contributors of JHotDraw. MIT License.
*/
package org.jhotdraw8.icollection.facade;
import org.jhotdraw8.icollection.readonly.ReadOnlyCollection;
import org.jhotdraw8.icollection.readonly.ReadOnlySequencedCollection;
import org.jhotdraw8.icollection.sequenced.ReversedSequencedSetView;
import org.jspecify.annotations.Nullable;
import java.util.Iterator;
import java.util.SequencedSet;
import java.util.Set;
import java.util.Spliterator;
import java.util.Spliterators;
import java.util.function.Consumer;
import java.util.function.IntSupplier;
import java.util.function.Predicate;
import java.util.function.Supplier;
/**
* Provides a {@link SequencedSet} facade to a set of {@code Set} functions.
*
* @param the element type
* @author Werner Randelshofer
*/
public class SequencedSetFacade extends SetFacade implements SequencedSet {
private final Supplier getFirstFunction;
private final Supplier getLastFunction;
private final Consumer addFirstFunction;
private final Consumer addLastFunction;
private final Supplier> reverseIteratorFunction;
private final Supplier> reverseSpliteratorFunction;
private final Predicate reversedAddFunction;
public SequencedSetFacade(ReadOnlyCollection backingSet,
Supplier> reverseIteratorFunction) {
this(backingSet::iterator, backingSet::spliterator,
reverseIteratorFunction,
() -> Spliterators.spliterator(reverseIteratorFunction.get(), backingSet.size(), Spliterator.DISTINCT),
backingSet::size,
backingSet::contains, null, null, null, null, null, null, null, null);
}
public SequencedSetFacade(ReadOnlySequencedCollection backingSet) {
this(backingSet::iterator, backingSet::spliterator, () -> backingSet.readOnlyReversed().iterator(),
() -> backingSet.readOnlyReversed().spliterator(), backingSet::size,
backingSet::contains, null, null,
backingSet::getFirst,
backingSet::getLast,
null, null, null, null);
}
public SequencedSetFacade(Set backingSet,
Supplier> reverseIteratorFunction) {
this(backingSet::iterator, backingSet::spliterator,
reverseIteratorFunction, () -> Spliterators.spliterator(reverseIteratorFunction.get(), backingSet.size(), Spliterator.DISTINCT), backingSet::size,
backingSet::contains, backingSet::clear, backingSet::remove, null, null, null, null, null, null);
}
public SequencedSetFacade(Supplier> iteratorFunction,
Supplier> reverseIteratorFunction,
IntSupplier sizeFunction,
Predicate
© 2015 - 2025 Weber Informatics LLC | Privacy Policy