La mejor manera de encontrar la respuesta a este tipo de preguntas es mirar el código fuente (y JavaDocs) de AbstractList, ArrayList y List (una interfaz). AbstractList implementa todos los métodos que necesita para implementar una Lista, excepto dos: get (int index) y size (). Esto hace que implementar su propia clase List sea mucho menos trabajo (el principio de programación “no se repita”).
Ahora mire la fuente ArrayList. Implementa get (int index) y size (), como debe ser, pero también implementa algunos de los otros métodos. ¿Por qué vuelve a implementar estos otros métodos? En la mayoría de los casos aquí, la razón es la eficiencia. Un ArrayList conoce su implementación interna (una matriz de elementos), por lo que puede hacer algunas cosas de manera más eficiente que confiar en la implementación de AbstractList.
En comparación, en el código fuente de LinkedList para ver cómo implementa ciertos métodos de manera diferente, especialmente el método get (int index).
- ¿Cuáles son algunas decisiones de programación aparentemente inofensivas que volvieron para atormentarte?
- Buscando socios de desarrollo offshore para una startup. ¿Alguien puede recomendar una empresa? Buscando a ambos, con sede en los Estados Unidos o socios externos. Se prefieren socios de desarrollo con sede en EE. UU.
- ¿Cuáles son los desafíos en los servicios de prueba de software?
- ¿Cuál es una descripción clara de una arquitectura MVC?
- ¿Puedo trabajar en un lugar con muchos ingenieros a la edad de 15 años?
Un buen ejercicio sería implementar su propia subclase List. Comenzará algo como esto:
List myList = new AbstractList () { @Anular Objeto público get (int index) { // necesita implementar esto de alguna manera volver nulo; } @Anular public int size () { // necesito implementar esto también devuelve 0; } };