Diferença entre Iterator e Listiterator?

Iterator ite = Set.iterator(); Iterator ite = List.iterator(); ListIterator listite = List.listIterator(); Podemos usar Iteratorpara percorrer a Setou a Listou a Map. Mas ListIteratorsó pode ser usado para atravessar a List, não pode atravessar a Set. Por quê? Eu sei que a principal diferença é...