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