I found a possible bug in the ArrayIterator class.

The index to the current position in the array 
changes when you call the "hasNext()" function, 
I think it shoud only change when you call the "next()"
function. (just like the ArrayEnumeration and JDK Iteretor behavior)

I did the following test:

  public static void main(String[] args)
  {
    Vector testVector = new Vector();
    testVector.add("teste1");
    testVector.add("teste2");
    testVector.add("teste3");

    Iterator itVector = testVector.iterator();
   

    System.out.println("With JDK implematation...");
    if (itVector.hasNext())
      {
        System.out.println((String) itVector.next());
        System.out.println((String) itVector.next());
        System.out.println((String) itVector.next());
      }

    String[] testArray = {"teste1", "teste2", "teste3"};

    ArrayIterator itArray = new ArrayIterator(testArray);

    System.out.println(
       "\nWith Jakarta Commons ArrayIterator implematation...");
    if (itArray.hasNext())
      {
        System.out.println((String) itArray.next());
        System.out.println((String) itArray.next());
        System.out.println((String) itArray.next());
      }
  }


 and the program output was:

"With JDK implematation...
teste1
teste2
teste3

With Jakarta Commons ArrayIterator implematation...
teste1
teste1
teste1"

So I fixed the class and my version of the file is attached.

Thank you,
Mauricio S. Moura

ArrayIterator.java

Reply via email to