Estoy leyendo un libro sobre Programación Java y quiero confirmar que entiendo la definición de la palabra "vector". Wikipedia dice que el vector es "Una matriz unidimensional", fuente http://en.wikipedia.org/wiki/Vector .
¿No sería más simple llamar a la matriz simplemente una matriz? ¿Hay alguna razón por la que necesitemos usar un lenguaje tan sofisticado como "vector"? ¿Hay alguna diferencia entre una matriz y un vector?
Fuente: Cracking the Coding Interview, cuarta edición, por Gayle McDowell, página 47.
FAQ
Q - ¿Por qué no publicaste esto en english.stackexchange.com?
R - Porque creo que solo las personas orientadas a la informática tendrán una buena respuesta.
std::vector<…>
("matrices" de tamaño dinámico). 2. El CLR (.NET runtime) también distingue entre "matrices" y "vectores", siendo este último un caso especial del primero, es decir, unidimensionales, basados en cero). Esa distinción es importante porque hay optimizaciones especiales para los vectores. 3. En matemáticas, una n -tupla de números reales también a veces se llama "vector".Respuestas:
En el uso típico, una "matriz" puede significar una matriz unidimensional o una matriz multidimensional. Además, en matemáticas, una matriz es una matriz bidimensional, mientras que un vector es una matriz unidimensional.
fuente
Los vectores no son exactamente matrices. No los clásicos de todos modos. Son matrices dinámicas. Se pueden cambiar de tamaño según sea necesario en lugar de ser de un tamaño fijo. Por lo tanto, son similares a ArrayLists pero no son exactamente lo mismo.
Las listas de matrices difieren de los vectores en que los vectores sincronizan operaciones individuales, que es algo que no desea para propósitos de concurrencia, en particular según Jon Skeet . Por lo tanto, Vector ha quedado en desuso a favor de ArrayList, pero algunos todavía lo llaman Vector.
El nombre se deriva originalmente del término matemático para una matriz unidimensional. Esto a pesar de que la estructura en realidad es una n-tupla .
fuente
Por lo general, vector y matriz son lo mismo y se usan indistintamente cuando se programa. Eso es en la mayoría de los lugares, por lo que no debe preocuparse mucho por eso la mayor parte del tiempo.
Dicho esto, el lenguaje es impreciso y a veces tenemos palabras que tienen diferentes significados en diferentes contextos que terminan significando lo mismo, o una palabra que tiene dos o más significados diferentes.
En C, una matriz es una serie de elementos de datos del mismo tipo que se almacenan en la memoria de forma contigua. Java heredó ese significado. No es lo mismo que una Lista o un Vector, ya que las matrices son más básicas que esas.
Un vector es una construcción matemática definida como un objeto que puede agregarse a otro objeto del mismo tipo o multiplicarse por cualquier número real (o complejo) que resulte en otro vector del mismo tipo. También tiene algunas otras propiedades que son muy útiles.
Un vector tiene dimensión . Es el número mínimo de vectores diferentes que deben combinarse para obtener todos los vectores posibles de ese tipo. La velocidad y la aceleración son vectores tridimensionales porque el espacio tiene 3 direcciones de base y al agregar múltiplos de esas tres direcciones de base puede obtener cualquier posición en el espacio. La posición en un plano es un vector bidimensional, y los números individuales son vectores unidimensionales.
Una forma de representar un vector de dimensión n es mediante el uso de una matriz de n elementos, cada uno de los cuales representa la cantidad de cada vector base que debe agregar para llegar a su vector.
Como puede representar un vector usando una matriz de elementos, con el tiempo, los dos conceptos se equipararon. Entonces, en muchos lugares, simplemente son lo mismo y en algunos idiomas las matrices se llaman vectores.
Otro caso en el que una palabra tiene dos significados diferentes es, por ejemplo, dimensión . La definición de Wikipedia de un vector como una matriz unidimensional es un ejemplo. No estás hablando de dimensión vectorial aquí. Estás hablando de la representación por computadora de la estructura de datos. Un vector tridimensional se puede representar mediante una matriz "1-dimensional" de tamaño 3. 3 números en línea. Una matriz 3x3 puede representarse mediante una matriz "bidimensional", que es lo que los programadores llaman una matriz de matrices. Sin embargo, una matriz 3x3 también es un vector matemático de dimensión 9 (ya que tiene todas las propiedades de un vector) y tiene 9 números. Confuso, ¿eh?
De todos modos, creo que la respuesta es simplemente: no te preocupes. Todo depende del contexto. Las dos palabras tienen orígenes diferentes, pero en el contexto de las estructuras de datos, cuando dicen vector significan exactamente matriz .
fuente
Las respuestas anteriores describen por qué esta clase es diferente de una "matriz", y sospecho que la razón por la que se usa un nombre diferente es porque los programadores reciben ayuda al tener un espacio de nombres bien organizado, en otras palabras, si se habla de un "Vector" es aclare exactamente a qué clase se refiere, mientras que si todas las clases similares fueran simplemente matrices, entonces no sería completamente claro.
fuente
Creo que el término "vector" vino de std :: vector de C ++. Apareció antes de Java y C #.
fuente
Es solo una edición descuidada.
Las primeras versiones de Java no incluían ArrayList. En lugar de ArrayList, se usó Vector. ArrayList se agregó más tarde y ahora se usa en lugar de Vector para la mayoría de los propósitos. Espero que el libro se haya escrito antes de agregar ArrayList, y que cuando se actualizó el texto, esta referencia al vector no.
Le sugiero que evite este tipo de libro "aprenda todo en diez minutos". Generalmente se escriben de manera rápida y descuidada. Este nivel de conocimiento no le conseguirá un trabajo en una tienda seria.
En su lugar, busque libros bien revisados por usuarios reconocidos de la tecnología cubierta y lea para comprender.
fuente
java.util.Vector
?El término vector proviene de ingeniería / física. Los vectores representan líneas de 2 y 3 dimensiones que tienen una dirección. Por ejemplo, supongamos que un proyectil tiene una velocidad horizontal de 20 m / sy una velocidad vertical de 10 m / s. Entonces representaría esto como (20,10). Está volando en una especie de diagonal a la derecha, así que ahora vea cómo los vectores de velocidad matemática se convierten en matrices, también conocidos como vectores.
fuente
No llamamos vectores de matrices, ya sea que haya entendido mal su fuente o que la fuente haya entendido mal Java, o ambos.
Una matriz es una estructura de datos bastante diferente de un Vector, que es diferente de una Lista nuevamente (que utiliza su código pegado).
Por supuesto, un vector matemático podría implementarse en Java usando cualquiera de los tres mecanismos, y bajo el capó cualquiera o ambos, el Vector y la Lista, podrían implementarse usando matrices.
fuente