I was just wondering why java.util.Scanner implements java.util.Iterator?
Scanner
implements the remove method and throws an UnsupportedOperationExcept
Because implementing iterator allows the scanner to be used wherever a read only iterator can be used.
Furthermore it does implement the contract. From the Iterator documentation (emphasis mine):
remove() Removes from the underlying collection the last element returned by this iterator (optional operation).