Я читаю книгу по программированию на Java и хочу подтвердить, что я понимаю определение слова «вектор». В Википедии говорится, что вектор - это «одномерный массив», источник http://en.wikipedia.org/wiki/Vector .
Не проще ли назвать массив просто массивом? Есть ли какая-то причина, по которой нам нужно использовать такой причудливый язык, как «вектор»? Есть ли разница между массивом и вектором?
Источник: «Взлом кодового интервью», 4-е издание, Гейл Макдауэлл, страница 47.
FAQ
Q - Почему вы не опубликовали это на english.stackexchange.com?
A - Потому что я думаю, что только люди, ориентированные на информатику, будут иметь хороший ответ.
std::vector<…>
(«массивы» динамического размера). 2. CLR (среда выполнения .NET) также различает «массивы» и «векторы», причем последний является частным случаем первого, а именно одномерного, основанного на нуле. Это различие важно, потому что есть специальные оптимизации для векторов. 3. В математике n- ряд вещественных чисел также иногда называют «вектором».Ответы:
В типичном использовании «массив» может означать либо одномерный массив, либо многомерный массив. Кроме того, в математике матрица - это двумерный массив, а вектор - одномерный массив.
источник
Векторы не совсем массивы. Во всяком случае, не классические. Это динамические массивы. Они могут быть изменены по мере необходимости, а не фиксированного размера. Таким образом, они похожи на ArrayLists, но не совсем так.
Списки массивов отличаются от Векторов тем, что Векторы синхронизируют отдельные операции, что не нужно для целей параллелизма, в частности, для Jon Skeet . Таким образом, Vector устарела в пользу ArrayList, но некоторые по-прежнему называют его Vector.
Название первоначально происходит от математического термина для 1 мерной матрицы. Это несмотря на то, что структура на самом деле является n-кортежем .
источник
Обычно вектор и массив - это одно и то же и используются взаимозаменяемо при программировании. Это в большинстве мест, поэтому вы не должны беспокоиться об этом большую часть времени.
Тем не менее, язык неточен, и у нас иногда есть слова, которые имеют разные значения в разных контекстах, которые в конечном итоге означают одно и то же, или одно слово имеет два или более разных значений.
В C массив - это серия элементов данных одного типа, которые хранятся в памяти непрерывно. Ява унаследовала это значение. Это не то же самое, что List или Vector, так как массивы более простые, чем те.
Вектор представляет собой математическую конструкцию , определен как объект , который может быть добавлен к другому объекту того же типа, или быть умножено на какой - либо реальной (или комплекса) , в результате чего количества другого вектора одного и того же типа. У этого также есть несколько других свойств, которые очень полезны.
Вектор имеет размерность . Это минимальное количество различных векторов, которые нужно объединить, чтобы получить все возможные векторы этого типа. Скорость и ускорение являются 3-мерными векторами, потому что пространство имеет 3 базовых направления, и, сложив кратные эти три базовых направления, вы можете получить любую позицию в пространстве. Положение на плоскости - это двумерный вектор, а отдельные числа - это одномерные векторы.
Один из способов представления вектора размерности n состоит в использовании массива из n элементов, каждый из которых представляет, сколько из каждого базового вектора нужно добавить, чтобы получить свой вектор.
Поскольку вы можете представить вектор, используя множество элементов, со временем эти два понятия были приравнены. Так что во многих местах это просто одно и то же, а в некоторых языках массивы называются векторами.
Другой случай, когда одно слово имеет два разных значения, например, измерение . Википедия, определение вектора как одномерного массива, является примером. Вы не говорите о векторном измерении здесь. Вы говорите о компьютерном представлении структуры данных. Трехмерный вектор может быть представлен «одномерным» массивом размера 3. 3 числа в строке. Матрица 3x3 может быть представлена «двумерным» массивом, который программисты называют массивом массивов. Тем не менее, матрица 3x3 также является математическим вектором размерности 9 (поскольку она обладает всеми свойствами вектора) и имеет 9 чисел. Смущает, а?
В любом случае, я думаю, что ответ прост: не волнуйтесь. Все зависит от контекста. Эти два слова имеют различное происхождение, но в контексте структур данных, когда они говорят, вектор, они означают именно массив .
источник
Ответы выше объясняют, почему этот класс отличается от «массива» - и я подозреваю, что причиной использования другого имени является то, что программистам помогает хорошо организованное пространство имен - другими словами, если вы говорите о «векторе», это ясно, какой класс вы имеете в виду, хотя, если бы все подобные классы были просто массивами, это было бы не совсем понятно.
источник
Я думаю, что термин «вектор» произошел от std :: vector из C ++. Это появилось до Java и C #.
источник
Это просто небрежное редактирование.
Ранние версии Java не включали ArrayList. Вместо ArrayList использовался Vector. ArrayList был добавлен позже и теперь используется вместо Vector для большинства целей. Я ожидаю, что книга была написана до того, как был добавлен ArrayList, и что при обновлении текста этой ссылки на вектор не было.
Я предлагаю вам избегать такого рода книги "выучи все за десять минут". Как правило, они написаны быстро и небрежно. Этот уровень знаний не даст вам работу в серьезном магазине.
Вместо этого ищите хорошо проверенные книги признанных пользователей рассматриваемой технологии и читайте для понимания.
источник
java.util.Vector
?Термин вектор происходит от инженерии / физики. Векторы представляют собой 2- и 3-мерные линии, которые имеют направление. Например, скажем, снаряд имеет горизонтальную скорость 20 м / с и вертикальную скорость 10 м / с. Таким образом, вы бы представляли это как (20,10). Он летит по диагонали вправо, так что теперь посмотрим, как математически векторы скорости становятся массивами или векторами.
источник
Мы не называем векторы массивов, либо вы неправильно поняли ваш источник, либо источник неправильно понял Java, либо и то, и другое.
Массив - это совершенно другая структура данных по сравнению с вектором, которая снова отличается от списка (который использует ваш вставленный код).
Конечно, математический вектор мог бы быть реализован в Java с использованием любого из трех механизмов, и под капотом любой из них или Vector, и List могли бы быть реализованы с использованием массивов.
источник