recorrer patron obtener objetos lista elemento ejemplo java api collections iterator contract

patron - Dos java.util.Iterators a la misma colección: ¿tienen que devolver elementos en el mismo orden?



recorrer lista de objetos java (3)

Esta es más una pregunta teórica. Si tengo una colección arbitraria c que no está ordenada y c.iterator() dos java.util.Iterator s llamando a c.iterator() dos veces, ¿deben los dos iteradores devolver los elementos de c en el mismo orden?

Quiero decir, en la práctica, probablemente siempre lo harán, pero ¿se ven obligados a hacerlo por contrato?

Gracias, Jan


La implementación de Iteradores es proporcionada por la clase de Colección específica. Iterador para Lista dará el elemento ordenado mientras Set no lo hará


No, ellos no son.

"No hay garantías sobre el orden en que se devuelven los elementos (a menos que esta colección sea una instancia de alguna clase que proporcione una garantía)".

Ver el contrato de recopilación # iterator api .

Eso incluye de un iterador a otro (ya que no dice nada acerca de requerir eso).

¡También considere que algo podría haber cambiado en la colección subyacente entre obtener esos dos iteradores! Algo agregado o eliminado.


Porque la mayoría de las estructuras de datos no están ordenadas de manera predeterminada, por lo que no es seguro que iteren en el mismo orden.

Si desea el mismo pedido, primero debe ordenar la colección.