Una simple pregunta, pero ¿por qué length
en una matriz no encapsulada? ¿Esto es solo para principiantes en programación porque siento que un método getLength()
sería fácil de implementar?Longitud en matrices
Respuesta
Tengo una suposición, pero no puedo decir que esta es la razón por la que los diseñadores de Java lo hicieron de esa manera.
Una matriz es un contenedor (y un Objeto por supuesto) con una longitud fija. Y es muy básico, por lo que la encapsulación en este caso sería agradable pero no crítica. Eche un vistazo a ArrayList, por ejemplo, que se puede considerar como una encapsulación de una matriz.
Una matriz básica tiene muchas ventajas sobre otros tipos que la encapsula. Y entonces, tal vez cuando salió la primera versión de Java carecía de la mayor parte de la optimización que tiene hoy en día. Entonces, tener una estructura de datos con la simplicidad (en términos de rendimiento) de una matriz es algo bueno.
También podría ser tan simple como que aún no ha pensar que en aquel momento y después tenían que mantener una compatibilidad hacia atrás :)
De todos modos, si usted encuentra cosas interesantes acerca de que (tal vez usted podría enviar por correo electrónico sol/oráculo) ¡por favor publique! Esa es una buena pregunta.
Aunque las matrices pueden interpretarse como objetos, en realidad son solo un conjunto fijo de direcciones de memoria que contienen algún otro objeto o variable. De esta manera, tienen atributos, tales como .length
, pero no necesariamente métodos, como .getLength()
Una gran cantidad de información acerca de las matrices se pueden encontrar aquí: http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html
'[citación necesitada]' – delnan
Esta explicación no retiene agua. De hecho, las matrices tienen 'Objeto' como su superclase implícita y, por lo tanto, TIENEN un montón de método. Se deduce que los diseñadores de Java * podrían * haber definido un método 'length()' para todas las matrices. (El hecho de que un programa de aplicación no pueda agregar métodos no es relevante aquí). –
que sería fácil de implementar, y que por eso no está implementado.
Las matrices son simplemente bloques de almacenamiento, sin controles reales. Permiten un método de almacenamiento fácil y rápido para cuando no se requieren controles avanzados.
Puede usar cosas como listas, colas, listas enlazadas, listas de doble enlace, etc. que pueden mantener un registro de su tamaño, si es necesario. Obviamente, dependiendo del idioma que esté utilizando, puede que tenga que crearlos usted mismo.
Si desea tener la longitud de la matriz y seguir usando una matriz simple, puede agregar 1 a una variable de conteo cada vez que agregue algo y menos uno cada vez que elimine algo. Esto realizará la misma función que un método getLength().
¿Qué? La longitud * es * almacenada, simplemente no está expuesta a través de un método getter, sino a través de un miembro público. – delnan
- 1. matrices de longitud cero
- 2. matrices de longitud cero frente a punteros
- 3. ¿Cómo se implementa la longitud en las matrices de Java?
- 4. Strcmp para matrices de celdas de longitud desigual en MATLAB
- 5. PHP: ¿fusiona dos matrices (de igual longitud) en una asociativa?
- 6. PHPDoc para matrices de argumentos de longitud variable
- 7. Compara dos matrices de enteros con la misma longitud
- 8. Comprobar la longitud de matrices multidimensionales con Javascript
- 9. cómo comparar dos matrices de diferente longitud si no conoce la longitud de cada una en javascript?
- 10. longitud y longitud() en Java
- 11. ¿Es una mejor práctica para envolver matrices y su longitud variable en una estructura en C?
- 12. La mejor manera de almacenar matrices de longitud variable en MySQL
- 13. Habilitación de VLA (matrices de longitud variable) en MS Visual C++?
- 14. Cómo obtener la longitud de las matrices bidimensionales dinámicamente asignadas en C
- 15. ¿Cómo se implementan las matrices en Java?
- 16. Accediendo matrices dentro de matrices En PHP
- 17. Arreglo de longitud variable
- 18. Arrays de longitud cero en VBScript
- 19. 'Matriz de matrices' en matlab?
- 20. Matriz de una longitud desconocida en C#
- 21. Cómo remodelar matrices en Mathematica
- 22. Algoritmo para generar todas las matrices posibles de unos y ceros de una longitud determinada
- 23. ¿Cómo declaro dos matrices dimensionales en javascript?
- 24. ¿Por qué C++ permite matrices de longitud variable que no están asignadas dinámicamente?
- 25. Matriz de longitud cero
- 26. ¿Cómo se evita que las matrices de longitud variable se bloqueen cuando no hay suficiente memoria?
- 27. ¿Cuál es el tipo de datos para la propiedad de longitud para las matrices de Java?
- 28. Unir matrices en VB.NET
- 29. creando matrices en xslt
- 30. Matrices limitadas en Ruby
relacionado: http://stackoverflow.com/q/9297899/697449 –
Vota para volver a abrir. OMI, esto NO es un duplicado de la pregunta vinculada. Esta pregunta es por qué los diseñadores de Java no ** encapsularon ** el campo 'longitud '. (La pregunta vinculada es sobre la consistencia API de matrices frente a cadenas ... que es un problema significativamente diferente). –
Además, es (IMO) y ** pregunta ** interesante, y digno de responder. –