Java - Perché chiamiamo un array un "vettore"?

19

Sto leggendo un libro sulla programmazione Java e voglio confermare di aver compreso la definizione della parola "vettore". Wikipedia dice che il vettore è "Un array monodimensionale", fonte link .

Non sarebbe più semplice chiamare l'array semplicemente un array? C'è qualche ragione per cui dobbiamo usare un linguaggio così fantasioso come "vettore"? C'è una differenza tra un array e un vettore?


Fonte: Cracking the Coding Interview, 4th Edition, di Gayle McDowell, pagina 47.

Domande frequenti
D - Perché non l'hai pubblicato su english.stackexchange.com?
A - Perché penso che solo le persone orientate al computer avranno una buona risposta.

    
posta davidjhp 06.08.2013 - 00:27
fonte

8 risposte

34

Nell'uso tipico, un "array" può significare una matrice monodimensionale o una matrice multidimensionale. Inoltre, in matematica, una matrice è a 2 dimensioni array mentre un vettore è un array 1-dimensionale.

    
risposta data 06.08.2013 - 00:31
fonte
10

I vettori non sono esattamente matrici. Comunque non quelli classici. Sono matrici dinamiche. Possono essere ridimensionati a seconda delle necessità anziché essere di dimensioni fisse. Sono quindi simili alle liste di array, ma non proprio uguali.

Le liste di array differiscono da Vettori per il fatto che i Vettori sincronizzano singole operazioni che è qualcosa che non vuoi per fini di concorrenza, in particolare per Jon Skeet . Pertanto Vector è stato deprecato a favore di ArrayList, ma alcuni lo chiamano ancora Vector.

Il nome è originariamente derivato dal termine matematico di una matrice 1 dimensionale. Questo nonostante la struttura sia effettivamente una n-tupla .

    
risposta data 06.08.2013 - 00:32
fonte
4

Di solito, vector e array sono la stessa cosa e vengono utilizzati in modo intercambiabile durante la programmazione. Questo è nella maggior parte dei luoghi, quindi non dovresti preoccupartene molto la maggior parte del tempo.

Detto questo, il linguaggio è impreciso e talvolta abbiamo parole che hanno significati diversi in contesti diversi che finiscono per significare la stessa cosa, o una parola che ha due o più significati diversi.

In C un array è una serie di elementi di dati dello stesso tipo archiviati in memoria in modo contiguo. Java ha ereditato questo significato. Non è la stessa cosa di un elenco o di un vettore, poiché gli array sono più basilari di quelli.

Un vettore è un costrutto matematico definito come un oggetto che può essere aggiunto a un altro oggetto dello stesso tipo o moltiplicato per qualsiasi numero reale (o complesso) risultante in un altro vettore della stessa genere. Ha anche alcune altre proprietà che sono molto utili.

Un vettore ha dimensione . È il numero minimo di diversi vettori che devono essere combinati per ottenere ogni vettore possibile di quel tipo. Velocità e accelerazione sono vettori tridimensionali perché lo spazio ha 3 direzioni di base e aggiungendo multipli di quelle tre direzioni di base è possibile ottenere qualsiasi posizione nello spazio. La posizione in un piano è un vettore bidimensionale e i singoli numeri sono vettori 1-dimensionale.

Un modo per rappresentare un vettore di dimensione n consiste nell'utilizzare un array di n elementi ognuno dei quali rappresenta la quantità di ciascun vettore base che devi aggiungere per arrivare a il tuo vettore.

Dato che puoi rappresentare un vettore usando un arra di elementi, con il tempo, i due concetti sono stati equiparati. Quindi, in molti posti, sono semplicemente la stessa cosa e in alcuni linguaggi gli array sono chiamati vettori.

Un altro caso in cui una parola ha due significati diversi è, ad esempio, dimensione . La definizione di wikipedia di un vettore come array monodimensionale è un esempio. Non stai parlando di dimensione vettoriale qui. Stai parlando della rappresentazione computerizzata della struttura dei dati. Un vettore tridimensionale può essere rappresentato da una matrice "1-dimensionale" di dimensione 3. 3 numeri in linea. Una matrice 3x3 può essere rappresentata da una matrice "bidimensionale", che è ciò che i programmatori chiamano una matrice di matrici. Eppure una matrice 3x3 è anche un vettore matematico della dimensione 9 (poiché ha tutte le proprietà di un vettore) e ha 9 numeri. Confusione, eh?

Comunque, penso che la risposta sia semplicemente: non ti preoccupare. Tutto dipende dal contesto. Le due parole hanno origini diverse, ma nel contesto delle strutture dati, quando dicono vector significano esattamente array .

    
risposta data 07.08.2013 - 03:30
fonte
-1

Le risposte sopra descrivono perché questa classe è diversa da una "matrice" - e sospetto che la ragione per cui viene usato un nome diverso sia perché i programmatori sono aiutati dall'avere uno spazio dei nomi ben organizzato - in altre parole se parli di un "Vector" "è chiaro esattamente quale classe intendi, mentre se tutte le classi simili fossero solo matrici, allora non sarebbe completamente chiaro.

    
risposta data 06.08.2013 - 10:44
fonte
-1

Penso che il termine "vettore" provenga dallo std :: vector di C ++. È apparso prima di Java e C #.

    
risposta data 07.08.2013 - 05:12
fonte
-1

È solo una modifica trascurata.

Le versioni precedenti di Java non includevano ArrayList. Invece di ArrayList, è stato utilizzato Vector. ArrayList è stato aggiunto in seguito e ora viene utilizzato al posto di Vector per la maggior parte degli scopi. Mi aspetto che il libro sia stato scritto prima che ArrayList sia stato aggiunto e che quando il testo è stato aggiornato, questo riferimento al vettore non lo era.

Ti suggerisco di evitare questo tipo di libro "impara tutto in dieci minuti". Generalmente sono scritti in modo rapido e sciatto. Questo livello di conoscenza non ti farà lavorare in un negozio serio.

Cerca invece libri ben recensiti da utenti riconosciuti della tecnologia coperta e leggi per capire.

    
risposta data 07.08.2013 - 22:38
fonte
-1

Il termine vettore deriva da ingegneria / fisica. I vettori rappresentano linee bidimensionali e tridimensionali che hanno una direzione. Ad esempio, supponiamo che un proiettile abbia una velocità orizzontale di 20 m / se una velocità verticale di 10 m / s. Quindi dovresti quindi rappresentarlo come (20,10). Sta volando in una sorta di diagonale a destra, quindi ora vedi come i vettori matematici di velocità diventano vettori o vettori.

    
risposta data 15.08.2016 - 01:59
fonte
-2

Non chiamiamo vettori di array, o hai frainteso la tua fonte o la sorgente ha frainteso Java, o entrambi.
Un array è una struttura dati completamente diversa da un vettore, che è diverso da un elenco di nuovo (utilizzato dal codice incollato).

Ovviamente un vettore matematico potrebbe essere implementato in Java usando uno dei tre meccanismi, e sotto il cofano di uno o entrambi i vettori Vector e List potrebbero essere implementati usando array.

    
risposta data 06.08.2013 - 07:10
fonte

Leggi altre domande sui tag