mi punto de vista, las ventajas de una lista de más de una matriz son bastante obvias:Beneficios de matrices
- genéricos proporcionan tipificación más precisa:
List<Integer>, List<? extends Number>, List<? super Integer>
. - Una interfaz de lista tiene varios métodos útiles:
addAll
,remove
etc. Mientras que para las matrices todas las operaciones estándar excepto get/set se deben realizar de una manera de procedimiento pasando a un método estático. - Las colecciones ofrecen implementaciones diferentes como
ArrayList
,LinkedList
, listas no modificables y sincronizadas, que se pueden ocultar bajo una interfaz de lista común. - control de longitud OOB.
Como desventajas solo puedo mencionar la ausencia de azúcar sintáctico y una verificación del tipo de tiempo de ejecución. Al mismo tiempo, el soporte de ambas estructuras requiere el uso frecuente de los métodos asList
y toArray
, lo que hace que el código sea menos legible. Entonces, tengo curiosidad por saber si hay algún beneficio importante de usar arreglos que extraño.
+1: las matrices son más eficientes, pero generalmente no las necesita. En todas las aplicaciones comerciales que he escrito, nunca hubo un problema de rendimiento que pudiera resolverse reemplazando colecciones con matrices. Solo en el número de herramientas de crujido he visto la necesidad de evitar envolver primitivas y, por lo tanto, la necesidad de seguir con las matrices. –
@Christian: De acuerdo, en la mayoría de las situaciones las colecciones funcionan bien. – markusk
Un gran defecto de los genéricos de Java es la falta de soporte para primitivos. Al menos algunas bibliotecas de terceros implementan clases de recolección para tipos primitivos, lo que elimina al menos la sobrecarga del boxeo y el desempaquetado. – josefx