121
C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más / Re:Java ejercicios resueltos diferencias entre ArrayList y LinkedList CU00921C
« en: 18 de Septiembre 2020, 18:39 »
Buenas, las observaciones que haría a este ejercicio son las siguientes.
En la clase Vehiculo aparece un método public static String ContarTiposArray(List<Vehiculo> pArreglo) y otro método public static String EliminaInserta(List<Vehiculo> pArreglo)
Esto métodos no los veo bien ubicados dentro de la forma de programación orientada a objetos. ¿Por qué? Porque cada clase debe tener unas responsabilidades acordes a lo que representa. No es lógico que la clase Vehiculo sea responsable de recibir un List de vehículos y contar los tipos que hay en ella, porque esto no es o no debería ser responsabilidad de un vehículo. Por tanto, ese conteo debería ir en otro sitio, bien en otra clase o bien en el main. Lo mismo para el método de eliminar e insertar.
Respecto al uso de métodos estáticos el problema lo veo precisamente en el diseño. Para invocar un método de la clase, antes tienes que instanciar un objeto. En lugar de instanciar un objeto has recurrido a usar un método estático, lo cual aunque pueda hacerse no resulta un buen diseño en este caso. En lugar de esto tendrías que haber instanciado un vehículo e invocar el método sobre esa instancia. O mejor aún, tener esos métodos en otra clase o en el main, lo cual hubiera sido más lógico.
Respecto a los resultados, se cumple con lo que pedía el ejercicio. En general, los tiempos obtenidos para ejecución con ArrayList son peores que los obtenidos con LinkedList.
Ejemplo usando ArrayList tiempo empleado en la eliminación-inserción (en nanosegundor):2826794
Ejemplo usando LinkedList tiempo empleado en la eliminación-inserción (en nanosegundor):595722
Puede verse un ejemplo de este ejercicio resuelto en https://aprenderaprogramar.com/foros/index.php?topic=5781.0
Salu2
En la clase Vehiculo aparece un método public static String ContarTiposArray(List<Vehiculo> pArreglo) y otro método public static String EliminaInserta(List<Vehiculo> pArreglo)
Esto métodos no los veo bien ubicados dentro de la forma de programación orientada a objetos. ¿Por qué? Porque cada clase debe tener unas responsabilidades acordes a lo que representa. No es lógico que la clase Vehiculo sea responsable de recibir un List de vehículos y contar los tipos que hay en ella, porque esto no es o no debería ser responsabilidad de un vehículo. Por tanto, ese conteo debería ir en otro sitio, bien en otra clase o bien en el main. Lo mismo para el método de eliminar e insertar.
Respecto al uso de métodos estáticos el problema lo veo precisamente en el diseño. Para invocar un método de la clase, antes tienes que instanciar un objeto. En lugar de instanciar un objeto has recurrido a usar un método estático, lo cual aunque pueda hacerse no resulta un buen diseño en este caso. En lugar de esto tendrías que haber instanciado un vehículo e invocar el método sobre esa instancia. O mejor aún, tener esos métodos en otra clase o en el main, lo cual hubiera sido más lógico.
Respecto a los resultados, se cumple con lo que pedía el ejercicio. En general, los tiempos obtenidos para ejecución con ArrayList son peores que los obtenidos con LinkedList.
Ejemplo usando ArrayList tiempo empleado en la eliminación-inserción (en nanosegundor):2826794
Ejemplo usando LinkedList tiempo empleado en la eliminación-inserción (en nanosegundor):595722
Puede verse un ejemplo de este ejercicio resuelto en https://aprenderaprogramar.com/foros/index.php?topic=5781.0
Salu2