it-swarm.com.de

Java - Warum nennen wir ein Array einen "Vektor"?

Ich lese ein Buch über Java Programmierung und möchte bestätigen, dass ich die Definition des Wortes "Vektor" verstehe. Wikipedia sagt, dass der Vektor "Ein eindimensionales Array" ist, 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?


enter image description here

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.

20
davidjhp

In der typischen Verwendung kann ein "Array" entweder ein eindimensionales Array oder ein mehrdimensionales Array bedeuten. In der Mathematik ist ein Matrix ein zweidimensionales Array , während ein Vektor ein eindimensionales Array ist.

35
Greg Hewgill

Vektoren sind nicht gerade Arrays. Jedenfalls keine klassischen. Sie sind dynamische Arrays. Sie können nach Bedarf in der Größe geändert werden, anstatt eine feste Größe zu haben. Sie ähneln daher ArrayLists, sind aber nicht ganz gleich.

ArrayLists unterscheiden sich von Vektoren darin, dass Vektoren einzelne Operationen synchronisieren, was Sie aus Gründen der Parallelität nicht möchten, insbesondere per Jon Skeet . Daher wurde Vector zugunsten von ArrayList abgelehnt, aber einige nennen es immer noch einen Vector.

Das Name leitet sich ursprünglich aus dem mathematischen Begriff für eine eindimensionale Matrix ab. Dies trotz der Struktur, die tatsächlich ein n-Tupel ist.

10
World Engineer

Normalerweise sind Vektor und Array dasselbe und werden beim Programmieren austauschbar verwendet. Das ist an den meisten Orten der Fall, daher sollten Sie sich die meiste Zeit keine großen Sorgen machen.

Die Sprache ist jedoch ungenau und wir haben manchmal 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 an 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 Objekt definiert ist und 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 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 von Vielfachen dieser drei Basisrichtungen können Sie jede Position im Raum erhalten. Die Position in einer Ebene ist ein zweidimensionaler Vektor, und einzelne Zahlen sind eindimensionale Vektoren.

Eine Möglichkeit, ein Vektor der Dimension n darzustellen, besteht darin, ein Array von n Elementen zu verwenden, das jeweils angibt, wie viel von jedem Basisvektor Sie hinzufügen müssen, um zu Ihrem Vektor zu gelangen.

Da Sie einen Vektor mit einem Arra von Elementen darstellen können, wurden die beiden Konzepte mit der Zeit gleichgesetzt. An vielen Orten sind sie einfach dasselbe und in einigen Sprachen werden Arrays als Vektoren bezeichnet.

Ein anderer Fall, in dem ein Wort zwei verschiedene Bedeutungen hat, ist beispielsweise Dimension. Die Wikipedia-Definition eines Vektors als eindimensionales Array ist ein Beispiel. Sie sprechen hier nicht von Vektordimension. Sie sprechen von der 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, was Programmierer als Array von Arrays bezeichnen. Eine 3x3-Matrix ist jedoch auch ein mathematischer Vektor der Dimension 9 (da sie alle Eigenschaften eines Vektors aufweist) und hat 9 Zahlen. Verwirrend, oder?

Wie auch immer, ich denke die Antwort ist einfach: Mach dir keine Sorgen. 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.

4
Andre Manoel