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

org.javafunk.funk.Multisets Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (C) 2011-Present Funk committers.
 * All rights reserved.
 *
 * The software in this package is published under the terms of the BSD
 * style license a copy of which has been included with this distribution in
 * the LICENSE.txt file.
 */
package org.javafunk.funk;

import com.google.common.collect.HashMultiset;
import com.google.common.collect.Multiset;

import static org.javafunk.funk.Eagerly.first;
import static org.javafunk.funk.Eagerly.rest;
import static org.javafunk.funk.Literals.collectionFrom;
import static org.javafunk.funk.Literals.iterableWith;

public class Multisets {
    private Multisets() {}

    public static  Multiset concatenate(Iterable> iterables) {
        Multiset concatenatedMultiset = HashMultiset.create(first(iterables).get());
        for (Iterable iterable : rest(iterables)) {
            concatenatedMultiset.addAll(collectionFrom(iterable));
        }
        return concatenatedMultiset;
    }

    public static  Multiset union(Iterable> iterables) {
        Multiset unionMultiset = HashMultiset.create(first(iterables).get());
        for (Iterable iterable : rest(iterables)) {
            Multiset currentMultiset = HashMultiset.create(iterable);
            for (T element : currentMultiset.elementSet()) {
                int numberInUnionMultiset = unionMultiset.count(element);
                int numberInCurrentMultiset = currentMultiset.count(element);
                if (numberInUnionMultiset < numberInCurrentMultiset) {
                    unionMultiset.setCount(element, numberInCurrentMultiset);
                }
            }
        }
        return unionMultiset;
    }

    public static  Multiset intersection(Iterable> iterables) {
        Multiset intersectionMultiset = HashMultiset.create(first(iterables).get());
        for (Iterable iterable : rest(iterables)) {
            intersectionMultiset = com.google.common.collect.Multisets.intersection(
                    intersectionMultiset, HashMultiset.create(iterable));
        }
        return intersectionMultiset;
    }

    public static  Multiset difference(Iterable> iterables) {
        Multiset differences = HashMultiset.create(first(iterables).get());
        for (Iterable iterable : rest(iterables)) {
            for (T item : iterable) {
                differences.remove(item);
            }
        }
        return differences;
    }

    public static  Multiset concatenate(
            Iterable i1, Iterable i2) {
        return concatenate(iterableWith(i1, i2));
    }

    public static  Multiset concatenate(
            Iterable i1, Iterable i2, Iterable i3) {
        return concatenate(iterableWith(i1, i2, i3));
    }

    public static  Multiset concatenate(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4) {
        return concatenate(iterableWith(i1, i2, i3, i4));
    }

    public static  Multiset concatenate(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4,
            Iterable i5) {
        return concatenate(iterableWith(i1, i2, i3, i4, i5));
    }

    public static  Multiset concatenate(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4,
            Iterable i5, Iterable i6) {
        return concatenate(iterableWith(i1, i2, i3, i4, i5, i6));
    }

    public static  Multiset concatenate(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4,
            Iterable i5, Iterable i6, Iterable i7) {
        return concatenate(iterableWith(i1, i2, i3, i4, i5, i6, i7));
    }

    public static  Multiset concatenate(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4,
            Iterable i5, Iterable i6, Iterable i7, Iterable i8) {
        return concatenate(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8));
    }

    public static  Multiset concatenate(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4,
            Iterable i5, Iterable i6, Iterable i7, Iterable i8,
            Iterable i9) {
        return concatenate(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8, i9));
    }

    public static  Multiset concatenate(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4,
            Iterable i5, Iterable i6, Iterable i7, Iterable i8,
            Iterable i9, Iterable i10) {
        return concatenate(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10));
    }

    public static  Multiset concatenate(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4,
            Iterable i5, Iterable i6, Iterable i7, Iterable i8,
            Iterable i9, Iterable i10, Iterable... i11on) {
        return concatenate(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11on));
    }

    public static  Multiset union(
            Iterable i1, Iterable i2) {
        return union(iterableWith(i1, i2));
    }

    public static  Multiset union(
            Iterable i1, Iterable i2, Iterable i3) {
        return union(iterableWith(i1, i2, i3));
    }

    public static  Multiset union(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4) {
        return union(iterableWith(i1, i2, i3, i4));
    }

    public static  Multiset union(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4,
            Iterable i5) {
        return union(iterableWith(i1, i2, i3, i4, i5));
    }

    public static  Multiset union(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4,
            Iterable i5, Iterable i6) {
        return union(iterableWith(i1, i2, i3, i4, i5, i6));
    }

    public static  Multiset union(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4,
            Iterable i5, Iterable i6, Iterable i7) {
        return union(iterableWith(i1, i2, i3, i4, i5, i6, i7));
    }

    public static  Multiset union(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4,
            Iterable i5, Iterable i6, Iterable i7, Iterable i8) {
        return union(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8));
    }

    public static  Multiset union(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4,
            Iterable i5, Iterable i6, Iterable i7, Iterable i8,
            Iterable i9) {
        return union(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8, i9));
    }

    public static  Multiset union(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4,
            Iterable i5, Iterable i6, Iterable i7, Iterable i8,
            Iterable i9, Iterable i10) {
        return union(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10));
    }

    public static  Multiset union(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4,
            Iterable i5, Iterable i6, Iterable i7, Iterable i8,
            Iterable i9, Iterable i10, Iterable... i11on) {
        return union(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11on));
    }

    public static  Multiset intersection(
            Iterable i1, Iterable i2) {
        return intersection(iterableWith(i1, i2));
    }

    public static  Multiset intersection(
            Iterable i1, Iterable i2, Iterable i3) {
        return intersection(iterableWith(i1, i2, i3));
    }

    public static  Multiset intersection(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4) {
        return intersection(iterableWith(i1, i2, i3, i4));
    }

    public static  Multiset intersection(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4,
            Iterable i5) {
        return intersection(iterableWith(i1, i2, i3, i4, i5));
    }

    public static  Multiset intersection(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4,
            Iterable i5, Iterable i6) {
        return intersection(iterableWith(i1, i2, i3, i4, i5, i6));
    }

    public static  Multiset intersection(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4,
            Iterable i5, Iterable i6, Iterable i7) {
        return intersection(iterableWith(i1, i2, i3, i4, i5, i6, i7));
    }

    public static  Multiset intersection(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4,
            Iterable i5, Iterable i6, Iterable i7, Iterable i8) {
        return intersection(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8));
    }

    public static  Multiset intersection(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4,
            Iterable i5, Iterable i6, Iterable i7, Iterable i8,
            Iterable i9) {
        return intersection(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8, i9));
    }

    public static  Multiset intersection(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4,
            Iterable i5, Iterable i6, Iterable i7, Iterable i8,
            Iterable i9, Iterable i10) {
        return intersection(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10));
    }

    public static  Multiset intersection(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4,
            Iterable i5, Iterable i6, Iterable i7, Iterable i8,
            Iterable i9, Iterable i10, Iterable... i11on) {
        return intersection(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11on));
    }

    public static  Multiset difference(
            Iterable i1, Iterable i2) {
        return difference(iterableWith(i1, i2));
    }

    public static  Multiset difference(
            Iterable i1, Iterable i2, Iterable i3) {
        return difference(iterableWith(i1, i2, i3));
    }

    public static  Multiset difference(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4) {
        return difference(iterableWith(i1, i2, i3, i4));
    }

    public static  Multiset difference(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4,
            Iterable i5) {
        return difference(iterableWith(i1, i2, i3, i4, i5));
    }

    public static  Multiset difference(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4,
            Iterable i5, Iterable i6) {
        return difference(iterableWith(i1, i2, i3, i4, i5, i6));
    }

    public static  Multiset difference(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4,
            Iterable i5, Iterable i6, Iterable i7) {
        return difference(iterableWith(i1, i2, i3, i4, i5, i6, i7));
    }

    public static  Multiset difference(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4,
            Iterable i5, Iterable i6, Iterable i7, Iterable i8) {
        return difference(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8));
    }

    public static  Multiset difference(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4,
            Iterable i5, Iterable i6, Iterable i7, Iterable i8,
            Iterable i9) {
        return difference(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8, i9));
    }

    public static  Multiset difference(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4,
            Iterable i5, Iterable i6, Iterable i7, Iterable i8,
            Iterable i9, Iterable i10) {
        return difference(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10));
    }

    public static  Multiset difference(
            Iterable i1, Iterable i2, Iterable i3, Iterable i4,
            Iterable i5, Iterable i6, Iterable i7, Iterable i8,
            Iterable i9, Iterable i10, Iterable... i11on) {
        return difference(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11on));
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy