com.github.dakusui.jcunit8.testsuite.TupleSet Maven / Gradle / Ivy
package com.github.dakusui.jcunit8.testsuite;
import com.github.dakusui.jcunit.core.tuples.Tuple;
import java.util.Collection;
import java.util.LinkedHashSet;
import java.util.Set;
public interface TupleSet extends Set {
TupleSet cartesianProduct(TupleSet tupleSet);
class Impl extends LinkedHashSet implements TupleSet {
public Impl(Collection tuples) {
this.addAll(tuples);
}
@Override
public TupleSet cartesianProduct(TupleSet rhs) {
TupleSet.Builder builder = new TupleSet.Builder();
for (Tuple eachFromLhs : this) {
for (Tuple eachFromRhs : rhs) {
builder.add(new Tuple.Builder().putAll(eachFromLhs).putAll(eachFromRhs).build());
}
}
return builder.build();
}
}
class Builder {
private final Set work;
public Builder() {
this.work = new LinkedHashSet<>();
}
public Builder addAll(Collection tuples) {
this.work.addAll(tuples);
return this;
}
public Builder add(Tuple tuple) {
this.work.add(tuple);
return this;
}
public TupleSet build() {
return new Impl(this.work);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy