001 002/* 003 * $Id$ 004 */ 005 006package edu.jas.poly; 007 008 009import java.util.Iterator; 010import java.util.Map; 011import java.util.SortedMap; 012 013import edu.jas.structure.RingElem; 014 015 016/** 017 * Iterator over monomials of a polynomial. Adaptor for 018 * val.entrySet().iterator(). 019 * @author Heinz Kredel 020 */ 021 022public class IndexListPolyIterator<C extends RingElem<C>> implements Iterator<IndexListMonomial<C>> { 023 024 025 /** 026 * Internal iterator over polynomial map. 027 */ 028 protected final Iterator<Map.Entry<IndexList, C>> ms; 029 030 031 /** 032 * Constructor of polynomial iterator. 033 * @param m SortetMap of a polynomial. 034 */ 035 public IndexListPolyIterator(SortedMap<IndexList, C> m) { 036 ms = m.entrySet().iterator(); 037 } 038 039 040 /** 041 * Test for availability of a next monomial. 042 * @return true if the iteration has more monomials, else false. 043 */ 044 public boolean hasNext() { 045 return ms.hasNext(); 046 } 047 048 049 /** 050 * Get next monomial element. 051 * @return next monomial. 052 */ 053 public IndexListMonomial<C> next() { 054 return new IndexListMonomial<C>(ms.next()); 055 } 056 057 058 /** 059 * Remove the last monomial returned from underlying set if allowed. 060 */ 061 public void remove() { 062 ms.remove(); 063 } 064 065}