mRelation;
/**
* Constructor.
*/
public HashRelationBackedSetOfPairs() {
mRelation = new HashRelation<>();
}
/**
* Note: Two calls to this method result in different {@link Pair} objects.
*
* {@inheritDoc}
*/
@Override
public Iterator> iterator() {
return new IteratorFromHashRelation<>(mRelation);
}
@Override
public void addPair(final E lhs, final E rhs) {
mRelation.addPair(lhs, rhs);
}
@Override
public boolean containsPair(final E lhs, final E rhs) {
return mRelation.containsPair(lhs, rhs);
}
@Override
public HashRelation getRelation() {
return mRelation;
}
/**
* Iterator wrapper.
*
* @author Christian Schilling (schillic@informatik.uni-freiburg.de)
* @param
* element type
*/
private static final class IteratorFromHashRelation implements Iterator> {
private final Iterator> mIt;
public IteratorFromHashRelation(final HashRelation hashRelation) {
mIt = hashRelation.getSetOfPairs().iterator();
}
@Override
public boolean hasNext() {
return mIt.hasNext();
}
@Override
public Pair next() {
final Entry next = mIt.next();
return new Pair<>(next.getKey(), next.getValue());
}
}
@Override
public String toString() {
return mRelation.toString();
}
}