Sospecho que no lo hace. Si quiero usar el hecho de que la lista se ordena, debo aplicar mi propio contains()
método, mediante la búsqueda binaria, por ejemplo? ¿Existen métodos que suponen que la lista se ordena?
Esta cuestión es diferente a la posible duplicado porque la otra pregunta no pregunta sobre el contains()
método.
¿El ArrayList de contains () método de trabajo más rápido si se ordena la ArrayList?
No lo hace. La puesta en práctica de ArrayList
no sabe si la lista se ordena o no. Ya que no sabe, no puede Optimizar en el caso cuando se ordena. (Y un examen del código fuente lo confirma.)
Podría una lista basada en matrices (hipotética) aplicación know? Creo que "No" en las siguientes razones:
Sin incluir ni una
Comparator
ni el requisito de que los elementos implementanComparable
, el concepto de ordenación está mal definida.El costo de la comprobación de que la lista se ordena es
O(N)
. El costo incremental de comprobar que la lista está siendo ordenado esO(1)
... pero aún así una o dos llamadas acompare
la disponibilidad para cada operación de actualización. Esa es una sobrecarga significativa ... de una estructura de datos de uso general para incurrir en la esperanza de optimización (justo) una operación en la API.
Pero eso esta bien. Si usted (el programador) es capaz de garantizar (a ser posible por medio de algoritmos eficientes) que una lista siempre se ordena, entonces usted puede utilizar Collections.binarySearch
... con ninguna perdida de comprobación adicional en las operaciones de actualización.