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

com.webguys.ponzu.api.set.UnsortedSetIterable Maven / Gradle / Ivy

Go to download

Ponzu is a collections framework for Java. It has JDK-compatible List, Set and Map implementations with a rich API and set of utility classes that work with any JDK compatible Collections, Arrays, Maps or Strings.

The newest version!
/*
 * Copyright 2011 Goldman Sachs.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.webguys.ponzu.api.set;

import com.webguys.ponzu.api.block.function.Function;
import com.webguys.ponzu.api.block.predicate.Predicate;
import com.webguys.ponzu.api.multimap.set.SetMultimap;
import com.webguys.ponzu.api.tuple.Pair;

/**
 * An iterable whose items are unique.
 */
public interface UnsortedSetIterable
        extends SetIterable
{
    /**
     * Returns the set whose members are all possible subsets of {@code this}. For example, the powerset of [1, 2] is
     * [[], [1], [2], [1,2]].
     */
    UnsortedSetIterable> powerSet();

     UnsortedSetIterable transform(Function function);

     UnsortedSetIterable transformIf(Predicate predicate, Function function);

     UnsortedSetIterable flatTransform(Function> function);

     SetMultimap groupBy(Function function);

     SetMultimap groupByEach(Function> function);

    UnsortedSetIterable union(SetIterable set);

    UnsortedSetIterable intersect(SetIterable set);

    UnsortedSetIterable difference(SetIterable subtrahendSet);

    UnsortedSetIterable symmetricDifference(SetIterable setB);

    UnsortedSetIterable filter(Predicate predicate);

    UnsortedSetIterable filterNot(Predicate predicate);

     UnsortedSetIterable> zip(Iterable that);

    UnsortedSetIterable> zipWithIndex();
}