2010-03-06 15 views

Respuesta

11

Generalmente, debe preferir elegir la estructura de datos correcta para el trabajo. Debe comprender su tarea, así como las diferentes opciones que tiene y cómo se comparan en términos de iteración, búsqueda y adición, eliminación e inserción de datos. En general, debe comprender cómo la estructura de datos accede y manipula la memoria y elegir la mejor estructura de datos en función de cómo anticipa que se utilizará su aplicación.

Obviamente, no siempre es claro. Pero puedes entender los ideales para diferentes estructuras de datos.

Por ejemplo, los datos de longitud fija puramente estáticos en los que solo se puede iterar, sin necesidad de búsqueda, son ideales para una matriz. Es común usar dichas matrices en algoritmos de cifrado. Si los datos son estáticos, pero en lugar de iterar, debe buscar, es posible que desee algún tipo de estructura de árbol. Si desea una inserción rápida, el hash es probablemente el ideal. Si los datos cambian a menudo, desea una estructura que sea eficiente para cambiar su tamaño, como una lista.

Por supuesto, hay muchas variaciones y combinaciones de estructuras de datos diseñadas para resolver todo tipo de problemas específicos. La razón por la que hay tantos es la importancia que tienen para escribir programas eficientes. De todos modos, mi punto es, aprende sobre las estructuras de datos. Comprenda las situaciones ideales para cada uno y luego podrá decidir o diseñar estructuras de datos adecuadas para cualquier tarea.

2

Las listas pueden crecer fácilmente en tamaño, y puede agregar y eliminar elementos en el medio de la lista fácilmente. Eso no se puede hacer con arreglos. Sin embargo, debes considerar para qué necesitas la lista. Si no cree que la lista va a cambiar mucho, utilice una matriz en su lugar.

+1

Sin embargo, el cambio de tamaño automático no es la única razón. List participa en todas las bondades API de colecciones, por lo que puede resolver la mayoría de los problemas relacionados con la estructura de datos con solo utilizar la API. – cherouvim

2

De Array vs ArrayList

un ArrayList es mejor que la matriz de uso cuando no se tiene conocimiento de antemano sobre número de elementos. ArrayList son más lentos que Arrays. Por lo tanto, si necesita eficiencia, intente utilizar matrices si es posible.

0

EDIT:
En ciertos casos, cuando se trata de tipos primitivos, su mejor ir con matrices porque en el caso de ArrayLists, se trata de boxeo y unboxing de las primitivas que podría ser un poco más lento en comparación con la manipulación primitivas con matrices.

+0

, por supuesto, puede especificar el tipo de elemento de una matriz. –

+0

No declare myList en un tipo concreto (ArrayList). Lo mejor es usar la lista de interfaz. – cherouvim

+0

No importa si usa List o ArrayList si el campo no es API pública. Por ejemplo, en Android, es menos trabajo llamar a un método en el tipo concreto de ArrayList que a la interfaz de lista. Tiendo a declarar mis campos privados del tipo concreto y devolver la interfaz en la API pública (getters, etc.). – NateS

0

Una cosa a tener en cuenta es que las clases de colecciones de Java favorecen la facilidad de uso general sobre la optimización para escenarios específicos. Entonces, como dijo un respondedor anterior, realmente debes considerar cómo vas a usarlo.

Por ejemplo, si está creando estructuras de datos "grandes", entonces ArrayList puede ser bastante ineficiente. Cada vez que alcanzas el límite de la matriz, asigna una nueva en (creo) 2 veces el tamaño. Por lo tanto, en promedio, una ArrayList solo se utilizará en un 75%.

En general se puede considerar que las colecciones de Java para ser primeras aproximaciones que suelen ser lo suficientemente bueno la mayoría del tiempo, y cuando se tiene medibles cuestiones de rendimiento que deben estar preparados para utilizar alternativo, Implementaciones de las colecciones más especializadas.

En el caso que mencione, puede considerar ArrayList como una forma más conveniente de manejar una matriz.

0

Uso Lists, ArrayLists et c principalmente porque no tengo que preocuparme de dónde está la próxima ranura libre o si es lo suficientemente grande, ya que Sun ya lo hizo por mí.

Cuestiones relacionadas