Estou lendo um livro sobre programação em Java e quero confirmar que entendi a definição da palavra "vetor". A Wikipedia diz que o vetor é "Uma matriz unidimensional", fonte http://en.wikipedia.org/wiki/Vector .
Não seria mais simples chamar a matriz simplesmente de matriz? Existe alguma razão pela qual precisamos usar uma linguagem sofisticada como "vetor"? Existe uma diferença entre uma matriz e um vetor?
Fonte: Cracking the Coding Interview, 4ª Edição, por Gayle McDowell, página 47.
Perguntas frequentes
P - Por que você não publicou isso em english.stackexchange.com?
A - Porque acho que apenas as pessoas orientadas para a ciência da computação terão uma boa resposta.
std::vector<…>
("matrizes" de tamanho dinâmico). 2. O CLR (.NET runtime) também distingue entre "matrizes" e "vetores", o último sendo um caso especial do primeiro, ou seja, unidimensional e baseado em zero). Essa distinção é importante porque há otimizações especiais para vetores. 3. Na matemática, um n- número de números reais também é chamado de "vetor".Respostas:
No uso típico, uma "matriz" pode significar uma matriz unidimensional ou uma matriz multidimensional. Além disso, em matemática, uma matriz é uma matriz bidimensional, enquanto um vetor é uma matriz unidimensional.
fonte
Vetores não são exatamente matrizes. Não clássicos de qualquer maneira. Eles são matrizes dinâmicas. Eles podem ser redimensionados conforme necessário, em vez de serem de tamanho fixo. Portanto, eles são semelhantes aos ArrayLists, mas não são iguais.
As ArrayLists diferem dos vetores, pois os vetores sincronizam operações individuais, algo que você não deseja para fins de simultaneidade, em particular por Jon Skeet . Assim, Vector foi preterido em favor de ArrayList, mas alguns ainda o chamam de Vector.
O nome é originalmente derivado do termo matemático para uma matriz unidimensional. Isso apesar da estrutura ser realmente uma n-tupla .
fonte
Normalmente, vetor e matriz são a mesma coisa e são usados de forma intercambiável na programação. Isso acontece na maioria dos lugares, então você não deve se preocupar muito com isso na maioria das vezes.
Dito isto, a linguagem é imprecisa e, às vezes, temos palavras que têm significados diferentes em contextos diferentes que acabam significando a mesma coisa, ou uma palavra com dois ou mais significados diferentes.
Em C, uma matriz é uma série de elementos de dados do mesmo tipo que são armazenados na memória de forma contígua. Java herdou esse significado. Não é o mesmo que uma Lista ou um Vetor, pois as matrizes são mais básicas que essas.
Um vetor é uma construção matemática definida como um objeto que pode ser adicionado a outro objeto do mesmo tipo ou multiplicado por qualquer número real (ou complexo), resultando em outro vetor do mesmo tipo. Também possui algumas outras propriedades que são muito úteis.
Um vetor tem dimensão . É o número mínimo de vetores diferentes que precisam ser combinados para obter todos os vetores possíveis desse tipo. Velocidade e aceleração são vetores tridimensionais porque o espaço tem três direções de base e, adicionando múltiplos dessas três direções de base, você pode obter qualquer posição no espaço. A posição em um plano é um vetor bidimensional e números individuais são vetores unidimensionais.
Uma maneira de representar um vetor de dimensão n é usar uma matriz de n elementos, cada um representando quanto de cada vetor base você precisa adicionar para chegar ao seu vetor.
Como você pode representar um vetor usando uma matriz de elementos, com o tempo, os dois conceitos foram equacionados. Então, em muitos lugares, eles simplesmente são a mesma coisa e, em alguns idiomas, matrizes são chamadas vetores.
Outro caso em que uma palavra tem dois significados diferentes é, por exemplo, dimensão . A definição da Wikipedia de um vetor como uma matriz unidimensional é um exemplo. Você não está falando da dimensão vetorial aqui. Você está falando sobre a representação por computador da estrutura de dados. Um vetor tridimensional pode ser representado por uma matriz "unidimensional" do tamanho 3. 3 números na linha. Uma matriz 3x3 pode ser representada por uma matriz "bidimensional", que é o que os programadores chamam de matriz de matrizes. No entanto, uma matriz 3x3 também é um vetor matemático da dimensão 9 (já que possui todas as propriedades de um vetor) e possui 9 números. Confuso, não é?
Enfim, acho que a resposta é simples: não se preocupe. Tudo depende do contexto. As duas palavras têm origens diferentes, mas no contexto das estruturas de dados, quando dizem vetor, elas significam exatamente matriz .
fonte
As respostas acima descrevem por que essa classe é diferente de uma "Matriz" - e eu suspeito que o motivo de um nome diferente ser usado é porque os programadores são ajudados por ter um espaço para nome bem organizado - em outras palavras, se você falar sobre um "Vetor", é esclareça exatamente qual classe você quer dizer, embora se todas as classes semelhantes fossem meramente matrizes, isso não seria totalmente claro.
fonte
Eu acho que o termo "vetor" veio do std :: vector do C ++. Apareceu antes de Java e C #.
fonte
É apenas uma edição desleixada.
As versões anteriores do Java não incluíam ArrayList. Em vez de ArrayList, Vector foi usado. ArrayList foi adicionado mais tarde e agora é usado em vez de Vector para a maioria dos propósitos. Espero que o livro tenha sido escrito antes da adição de ArrayList e que, quando o texto foi atualizado, essa referência ao vetor não era.
Sugiro que você evite esse tipo de livro "aprenda tudo em dez minutos". Geralmente eles são escritos de forma rápida e desleixada. Esse nível de conhecimento não garante um emprego em uma loja séria.
Em vez disso, procure livros bem revisados por usuários reconhecidos da tecnologia abordada e lidos para entender.
fonte
java.util.Vector
?O termo vetor vem de engenharia / física. Os vetores representam linhas dimensionais 2 e 3 que têm uma direção. Por exemplo, digamos que um projétil tenha velocidade horizontal de 20 m / se velocidade vertical de 10 m / s. Então você representaria isso como (20,10). Está voando na diagonal direita, agora veja como os vetores de velocidade matematicamente se tornam matrizes, também conhecidos como vetores.
fonte
Nós não chamamos vetores de matrizes, você entendeu mal sua fonte ou a fonte não entendeu Java, ou ambos.
Uma matriz é uma estrutura de dados bastante diferente de um Vector, que é diferente de uma Lista novamente (que seu código colado usa).
É claro que um vetor matemático poderia ser implementado em Java usando um dos três mecanismos, e sob o capô um ou ambos, o Vector e a Lista, poderiam ser implementados usando matrizes.
fonte