Ich lese ein Buch über Java-Programmierung und möchte bestätigen, dass ich die Definition des Wortes "Vektor" verstehe. Wikipedia sagt, der Vektor sei "ein eindimensionales Array", Quelle http://en.wikipedia.org/wiki/Vector .
Wäre es nicht einfacher, das Array einfach als Array zu bezeichnen? Gibt es einen Grund, warum wir eine so ausgefallene Sprache wie "Vektor" verwenden müssen? Gibt es einen Unterschied zwischen einem Array und einem Vektor?
Quelle: Cracking the Coding Interview, 4. Auflage, von Gayle McDowell, Seite 47.
FAQ
F - Warum hast du das nicht auf english.stackexchange.com gepostet?
A - Weil ich denke, dass nur Informatiker eine gute Antwort haben werden.
std::vector<…>
(dynamisch große "Arrays"). 2. Die CLR (.NET Runtime) unterscheidet auch zwischen "Arrays" und "Vektoren", wobei letzteres ein Sonderfall der ersteren ist, nämlich eindimensionale, nullbasierte. Diese Unterscheidung ist wichtig, da es spezielle Optimierungen für Vektoren gibt. 3. In der Mathematik wird ein n- Tupel reeller Zahlen manchmal auch als "Vektor" bezeichnet.Antworten:
In der typischen Verwendung kann ein "Array" entweder ein eindimensionales Array oder ein mehrdimensionales Array bedeuten. In der Mathematik ist eine Matrix ein zweidimensionales Array, während ein Vektor ein eindimensionales Array ist.
quelle
Vektoren sind keine Arrays. Jedenfalls keine klassischen. Sie sind dynamische Arrays. Sie können nach Bedarf geändert werden, anstatt eine feste Größe zu haben. Sie sind daher ArrayLists ähnlich, aber nicht ganz gleich.
ArrayLists unterscheiden sich von Vectors darin, dass Vectors einzelne Operationen synchronisieren, was Sie insbesondere für Jon Skeet aus Gründen der Parallelität nicht möchten . Aus diesem Grund wurde Vector zugunsten von ArrayList abgelehnt, einige nennen es jedoch weiterhin Vector.
Der Name leitet sich ursprünglich vom mathematischen Begriff für eine eindimensionale Matrix ab. Dies ist trotz der Struktur, die tatsächlich ein n-Tupel ist .
quelle
Normalerweise sind Vektor und Array dasselbe und werden beim Programmieren synonym verwendet. Dies ist an den meisten Orten der Fall, sodass Sie sich die meiste Zeit nicht darum kümmern sollten.
Das heißt, Sprache ist ungenau und manchmal haben wir Wörter mit unterschiedlichen Bedeutungen in unterschiedlichen Kontexten, die am Ende dasselbe bedeuten, oder ein Wort mit zwei oder mehr unterschiedlichen Bedeutungen.
In C ist ein Array eine Reihe von Datenelementen des gleichen Typs, die zusammenhängend im Speicher gespeichert sind. Java hat diese Bedeutung geerbt. Es ist nicht dasselbe wie eine Liste oder ein Vektor, da Arrays grundlegender sind als diese.
Ein Vektor ist ein mathematisches Konstrukt, das als ein Objekt definiert ist, das zu einem anderen Objekt desselben Typs hinzugefügt oder mit einer beliebigen reellen (oder komplexen) Zahl multipliziert werden kann, was zu einem anderen Vektor desselben Typs führt. Es hat auch einige andere Eigenschaften, die sehr nützlich sind.
Ein Vektor hat eine Dimension . Es ist die minimale Anzahl verschiedener Vektoren, die kombiniert werden müssen, um jeden möglichen Vektor dieses Typs zu erhalten. Geschwindigkeit und Beschleunigung sind dreidimensionale Vektoren, da der Raum drei Basisrichtungen hat. Durch Hinzufügen eines Vielfachen dieser drei Basisrichtungen können Sie eine beliebige Position im Raum erhalten. Die Position in einer Ebene ist ein zweidimensionaler Vektor, und einzelne Zahlen sind eindimensionale Vektoren.
Eine Möglichkeit, einen Vektor der Dimension n darzustellen, besteht darin, ein Array von n Elementen zu verwenden, von denen jedes darstellt, wie viel von jedem Basisvektor Sie hinzufügen müssen, um zu Ihrem Vektor zu gelangen.
Da Sie einen Vektor mit einer Reihe von Elementen mit der Zeit darstellen können, wurden die beiden Konzepte gleichgesetzt. Daher sind sie an vielen Stellen einfach dasselbe und in einigen Sprachen werden Arrays als Vektoren bezeichnet.
Ein anderer Fall, in dem ein Wort zwei verschiedene Bedeutungen hat, ist beispielsweise die Dimension . Die Wikipedia-Definition eines Vektors als eindimensionales Array ist ein Beispiel. Sie sprechen hier nicht von Vektordimensionen. Sie sprechen über die Computerdarstellung der Datenstruktur. Ein dreidimensionaler Vektor kann durch ein "eindimensionales" Array der Größe 3 dargestellt werden. 3 Zahlen in einer Linie. Eine 3x3-Matrix kann durch ein "2-dimensionales" Array dargestellt werden, das von Programmierern als Array von Arrays bezeichnet wird. Eine 3x3-Matrix ist aber auch ein mathematischer Vektor der Dimension 9 (da sie alle Eigenschaften eines Vektors hat) und 9 Zahlen hat. Verwirrend, nicht wahr?
Wie auch immer, ich denke die Antwort ist einfach: keine Sorge. Es hängt alles vom Kontext ab. Die beiden Wörter haben unterschiedliche Ursprünge, aber im Kontext von Datenstrukturen bedeuten sie , wenn sie Vektor sagen , genau Array .
quelle
Die obigen Antworten beschreiben, warum sich diese Klasse von einem "Array" unterscheidet - und ich vermute, dass ein anderer Name verwendet wird, weil Programmierer durch einen gut organisierten Namespace unterstützt werden - mit anderen Worten, wenn Sie von einem "Vector" sprechen klar genau, welche Klasse Sie meinen, während wenn alle ähnlichen Klassen nur Arrays wären, wäre es nicht ganz klar.
quelle
Ich denke, der Begriff "Vektor" stammt aus C ++ 's std :: vector. Es erschien vor Java und C #.
quelle
Es ist nur eine schlampige Bearbeitung.
In früheren Versionen von Java war ArrayList nicht enthalten. Anstelle von ArrayList wurde Vector verwendet. ArrayList wurde später hinzugefügt und wird jetzt für die meisten Zwecke anstelle von Vector verwendet. Ich gehe davon aus, dass das Buch geschrieben wurde, bevor ArrayList hinzugefügt wurde, und dass dieser Verweis auf vector bei der Aktualisierung des Texts nicht vorhanden war.
Ich schlage vor, Sie vermeiden diese Art von "alles in zehn Minuten lernen" -Buch. Im Allgemeinen werden sie schnell und schlampig geschrieben. Mit diesem Wissensstand bekommen Sie keinen Job in einem seriösen Geschäft.
Suchen Sie stattdessen nach gut besprochenen Büchern anerkannter Anwender der behandelten Technologie und lesen Sie sie, um sie besser zu verstehen.
quelle
java.util.Vector
?Der Begriff Vektor stammt aus der Technik / Physik. Vektoren stellen zwei- und dreidimensionale Linien dar, die eine Richtung haben. Angenommen, ein Projektil hat eine horizontale Geschwindigkeit von 20 m / s und eine vertikale Geschwindigkeit von 10 m / s. Sie würden dies also als (20,10) darstellen. Es fliegt in einer Art Diagonale nach rechts. Sehen Sie sich also an, wie aus mathematischen Geschwindigkeitsvektoren Arrays oder Vektoren werden.
quelle
Wir bezeichnen Arrays nicht als Vektoren. Entweder haben Sie Ihre Quelle missverstanden oder die Quelle hat Java missverstanden oder beides.
Ein Array ist eine ganz andere Datenstruktur als ein Vektor, die sich wiederum von einer Liste unterscheidet (die in Ihrem eingefügten Code verwendet wird).
Natürlich könnte ein mathematischer Vektor in Java unter Verwendung eines der drei Mechanismen implementiert werden, und unter der Haube könnten entweder der Vektor oder die Liste oder beide unter Verwendung von Arrays implementiert werden.
quelle