当我使用 Iterator it = denseBagMap.keySet().iterator() 时,即使它包含不止一次,它也只会返回一个键。但我希望能够返回一个元素,假设“a”出现 3 次。下一个方法应该能够返回“a”三次,但我不确定我该怎么做。我在这方面有点慢,但如果有人可以向我展示带有实际代码的迭代器,那将会很有帮助。迭代器只需要 hasNext() 和 next() 方法。
public class DenseBag<T> extends AbstractCollection<T> {
private Map<T, Integer> denseBagMap;
private int size; // Total number of elements in the bag
/**
* Initialize a new, empty DenseBag
*/
public DenseBag() {
denseBagMap = new HashMap<T, Integer>();
};
public boolean equals(Object o) {
if (o == this) {
return true;
}
if (!(o instanceof DenseBag)) {
return false;
}
DenseBag<T> dense = (DenseBag<T>) o;
return size == dense.size;
}
public int hashCode() {
return this.denseBagMap.hashCode();
}
//I am not sure how to write an iterator method for this.
public Iterator<T> iterator() {
return new Iterator<T>() {
public boolean hasNext(){
}
public T next(){
}