package edu.kit.pse.ws2013.routekit.map;
import java.util.AbstractCollection;
import java.util.Iterator;
import java.util.Set;
/**
* Is a set of all integers from a fixed interval.
*
*/
public class IntIntervalSet extends AbstractCollection<Integer> implements
Set<Integer> {
public class IntArrayIterator implements Iterator<Integer> {
int pos = 0;
@Override
public boolean hasNext() {
return pos < count;
}
@Override
public Integer next() {
return base + pos++;
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
}
int base;
int count;
/**
* Creates a new IntIntervalSet.
*
* @param base
* the first number in this set.
* @param count
* the number of numbers in this set ({@link #size()}
*/
public IntIntervalSet(int base, int count) {
this.base = base;
this.count = count;
}
@Override
public int size() {
return count;
}
@Override
public Iterator<Integer> iterator() {
return new IntArrayIterator();
}
@Override
public boolean equals(Object obj) {
if (obj instanceof Set<?>) {
return ((Set<?>) obj).containsAll(this)
&& this.containsAll((Set<?>) obj);
}
return false;
}
}