0

当我使用 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(){
 }
4

2 回答 2

0

keySet根据定义,A是 a Set,因此每个 key 只包含一个条目。如果您希望存储在每个键下添加的所有条目,您应该使用Apache MultiMap之类的东西。

于 2013-04-05T23:22:50.197 回答
0

放在那里 return new denseBagMap.keySet().iterator();

于 2013-04-05T23:23:29.423 回答