【问题标题】:Java Iterator CreationJava 迭代器创建
【发布时间】:2014-12-14 18:56:39
【问题描述】:

我需要为现有的 sparsematrix 对象创建一个迭代器,但我的代码中缺少一些东西:

public Iterator<SparseMatrix.Entry<E>> iterator() {
        return new EntryIterator();
    }

然后:

private class EntryIterator implements Iterator<SparseMatrix.Entry<E>> {
        // Possible approach:
        // Consider the use of firstEntry() and higherEntry() methods
        // defined in TreeMap.
        Map.Entry<Position, E> mapEntry = map.firstEntry();
        Iterator<E> itr = (Iterator<E>) ((SparseMatrix<E>) mapEntry).iterator() //BOLD

        @Override
        public boolean hasNext() {
            return itr.hasNext();
        }

        @Override
        public SparseMatrix.Entry<E> next() {
            E v = itr.next();
            return (pco.smatrix.SparseMatrix.Entry<E>) v;
        }}

由于某种原因,我构建的迭代器无法正常工作。此外,映射引用引用了一个TreeMap 对象,然后使用该对象创建一个TMSparseMatrix,并且由于某种原因 //BOLD 行弄乱了整个代码。这是主要问题。

【问题讨论】:

    标签: java iterator


    【解决方案1】:

    您的hasNext 是错误的,因为它调用了itr.next(),它已经推进了itr 迭代器。

    改成:

        public boolean hasNext() {
            return itr.hasNext();
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      • 2016-07-24
      • 2014-04-20
      • 1970-01-01
      相关资源
      最近更新 更多