If you look at the code from equals(), I think it misses this check :

"AX".equals("A");

since it does not check if the termLength() are different.

Here is an example of a fix, it may not be optimal, but I think checking size as the first thing is better than checking size after looping.

public boolean equals(Object other) {
   if (other == this) {
     return true;
   }
//Check for size also
   if (termLength() != ((TermAttributeImpl)other).termLength()) {
     return false;
   }

   if (other instanceof TermAttribute) {
     initTermBuffer();
     TermAttributeImpl o = ((TermAttributeImpl) other);
     o.initTermBuffer();
for(int i=0;i<termLength;i++) {
       if (termBuffer[i] != o.termBuffer[i]) {
         return false;
       }
     }
     return true;
   }
return false;
 }

Reply via email to