
org.javafunk.funk.Multisets Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of funk-core Show documentation
Show all versions of funk-core Show documentation
Functional utilities for Java: core APIs
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 extends Iterable extends T>> iterables) {
Multiset concatenatedMultiset = HashMultiset.create(first(iterables).get());
for (Iterable extends T> iterable : rest(iterables)) {
concatenatedMultiset.addAll(collectionFrom(iterable));
}
return concatenatedMultiset;
}
public static Multiset union(Iterable extends Iterable extends T>> iterables) {
Multiset unionMultiset = HashMultiset.create(first(iterables).get());
for (Iterable extends T> 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 extends Iterable extends T>> iterables) {
Multiset intersectionMultiset = HashMultiset.create(first(iterables).get());
for (Iterable extends T> iterable : rest(iterables)) {
intersectionMultiset = com.google.common.collect.Multisets.intersection(
intersectionMultiset, HashMultiset.create(iterable));
}
return intersectionMultiset;
}
public static Multiset difference(Iterable extends Iterable extends T>> iterables) {
Multiset differences = HashMultiset.create(first(iterables).get());
for (Iterable extends T> iterable : rest(iterables)) {
for (T item : iterable) {
differences.remove(item);
}
}
return differences;
}
public static Multiset concatenate(
Iterable extends T> i1, Iterable extends T> i2) {
return concatenate(iterableWith(i1, i2));
}
public static Multiset concatenate(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3) {
return concatenate(iterableWith(i1, i2, i3));
}
public static Multiset concatenate(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4) {
return concatenate(iterableWith(i1, i2, i3, i4));
}
public static Multiset concatenate(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4,
Iterable extends T> i5) {
return concatenate(iterableWith(i1, i2, i3, i4, i5));
}
public static Multiset concatenate(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4,
Iterable extends T> i5, Iterable extends T> i6) {
return concatenate(iterableWith(i1, i2, i3, i4, i5, i6));
}
public static Multiset concatenate(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4,
Iterable extends T> i5, Iterable extends T> i6, Iterable extends T> i7) {
return concatenate(iterableWith(i1, i2, i3, i4, i5, i6, i7));
}
public static Multiset concatenate(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4,
Iterable extends T> i5, Iterable extends T> i6, Iterable extends T> i7, Iterable extends T> i8) {
return concatenate(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8));
}
public static Multiset concatenate(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4,
Iterable extends T> i5, Iterable extends T> i6, Iterable extends T> i7, Iterable extends T> i8,
Iterable extends T> i9) {
return concatenate(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8, i9));
}
public static Multiset concatenate(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4,
Iterable extends T> i5, Iterable extends T> i6, Iterable extends T> i7, Iterable extends T> i8,
Iterable extends T> i9, Iterable extends T> i10) {
return concatenate(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10));
}
public static Multiset concatenate(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4,
Iterable extends T> i5, Iterable extends T> i6, Iterable extends T> i7, Iterable extends T> i8,
Iterable extends T> i9, Iterable extends T> i10, Iterable extends T>... i11on) {
return concatenate(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11on));
}
public static Multiset union(
Iterable extends T> i1, Iterable extends T> i2) {
return union(iterableWith(i1, i2));
}
public static Multiset union(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3) {
return union(iterableWith(i1, i2, i3));
}
public static Multiset union(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4) {
return union(iterableWith(i1, i2, i3, i4));
}
public static Multiset union(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4,
Iterable extends T> i5) {
return union(iterableWith(i1, i2, i3, i4, i5));
}
public static Multiset union(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4,
Iterable extends T> i5, Iterable extends T> i6) {
return union(iterableWith(i1, i2, i3, i4, i5, i6));
}
public static Multiset union(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4,
Iterable extends T> i5, Iterable extends T> i6, Iterable extends T> i7) {
return union(iterableWith(i1, i2, i3, i4, i5, i6, i7));
}
public static Multiset union(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4,
Iterable extends T> i5, Iterable extends T> i6, Iterable extends T> i7, Iterable extends T> i8) {
return union(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8));
}
public static Multiset union(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4,
Iterable extends T> i5, Iterable extends T> i6, Iterable extends T> i7, Iterable extends T> i8,
Iterable extends T> i9) {
return union(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8, i9));
}
public static Multiset union(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4,
Iterable extends T> i5, Iterable extends T> i6, Iterable extends T> i7, Iterable extends T> i8,
Iterable extends T> i9, Iterable extends T> i10) {
return union(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10));
}
public static Multiset union(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4,
Iterable extends T> i5, Iterable extends T> i6, Iterable extends T> i7, Iterable extends T> i8,
Iterable extends T> i9, Iterable extends T> i10, Iterable extends T>... i11on) {
return union(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11on));
}
public static Multiset intersection(
Iterable extends T> i1, Iterable extends T> i2) {
return intersection(iterableWith(i1, i2));
}
public static Multiset intersection(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3) {
return intersection(iterableWith(i1, i2, i3));
}
public static Multiset intersection(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4) {
return intersection(iterableWith(i1, i2, i3, i4));
}
public static Multiset intersection(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4,
Iterable extends T> i5) {
return intersection(iterableWith(i1, i2, i3, i4, i5));
}
public static Multiset intersection(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4,
Iterable extends T> i5, Iterable extends T> i6) {
return intersection(iterableWith(i1, i2, i3, i4, i5, i6));
}
public static Multiset intersection(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4,
Iterable extends T> i5, Iterable extends T> i6, Iterable extends T> i7) {
return intersection(iterableWith(i1, i2, i3, i4, i5, i6, i7));
}
public static Multiset intersection(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4,
Iterable extends T> i5, Iterable extends T> i6, Iterable extends T> i7, Iterable extends T> i8) {
return intersection(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8));
}
public static Multiset intersection(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4,
Iterable extends T> i5, Iterable extends T> i6, Iterable extends T> i7, Iterable extends T> i8,
Iterable extends T> i9) {
return intersection(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8, i9));
}
public static Multiset intersection(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4,
Iterable extends T> i5, Iterable extends T> i6, Iterable extends T> i7, Iterable extends T> i8,
Iterable extends T> i9, Iterable extends T> i10) {
return intersection(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10));
}
public static Multiset intersection(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4,
Iterable extends T> i5, Iterable extends T> i6, Iterable extends T> i7, Iterable extends T> i8,
Iterable extends T> i9, Iterable extends T> i10, Iterable extends T>... i11on) {
return intersection(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11on));
}
public static Multiset difference(
Iterable extends T> i1, Iterable extends T> i2) {
return difference(iterableWith(i1, i2));
}
public static Multiset difference(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3) {
return difference(iterableWith(i1, i2, i3));
}
public static Multiset difference(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4) {
return difference(iterableWith(i1, i2, i3, i4));
}
public static Multiset difference(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4,
Iterable extends T> i5) {
return difference(iterableWith(i1, i2, i3, i4, i5));
}
public static Multiset difference(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4,
Iterable extends T> i5, Iterable extends T> i6) {
return difference(iterableWith(i1, i2, i3, i4, i5, i6));
}
public static Multiset difference(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4,
Iterable extends T> i5, Iterable extends T> i6, Iterable extends T> i7) {
return difference(iterableWith(i1, i2, i3, i4, i5, i6, i7));
}
public static Multiset difference(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4,
Iterable extends T> i5, Iterable extends T> i6, Iterable extends T> i7, Iterable extends T> i8) {
return difference(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8));
}
public static Multiset difference(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4,
Iterable extends T> i5, Iterable extends T> i6, Iterable extends T> i7, Iterable extends T> i8,
Iterable extends T> i9) {
return difference(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8, i9));
}
public static Multiset difference(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4,
Iterable extends T> i5, Iterable extends T> i6, Iterable extends T> i7, Iterable extends T> i8,
Iterable extends T> i9, Iterable extends T> i10) {
return difference(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10));
}
public static Multiset difference(
Iterable extends T> i1, Iterable extends T> i2, Iterable extends T> i3, Iterable extends T> i4,
Iterable extends T> i5, Iterable extends T> i6, Iterable extends T> i7, Iterable extends T> i8,
Iterable extends T> i9, Iterable extends T> i10, Iterable extends T>... i11on) {
return difference(iterableWith(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11on));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy