Java - Mengapa kita menyebut array sebagai "vektor"?


20

Saya membaca buku tentang Pemrograman Java, dan ingin mengonfirmasi bahwa saya mengerti definisi kata "vektor". Wikipedia mengatakan vektor adalah "Array satu dimensi", sumber http://en.wikipedia.org/wiki/Vector .

Bukankah lebih mudah untuk memanggil array hanya sebuah array? Apakah ada alasan kita perlu menggunakan bahasa mewah seperti "vektor"? Apakah ada perbedaan antara array dan vektor?


masukkan deskripsi gambar di sini

Sumber: Cracking the Coding Wawancara, Edisi ke-4, oleh Gayle McDowell, halaman 47.

FAQ
T - Mengapa Anda tidak memposting ini di english.stackexchange.com?
A - Karena saya pikir hanya orang yang berorientasi pada ilmu komputer yang akan memiliki jawaban yang baik.


1
Vektor tidak sama dengan ArrayLists, yaitu karena sinkronisasi bawaan. Info lebih lanjut di sini: stackoverflow.com/questions/2986296/…
Jeroen Vannevel

Di luar topik: Istilah "vektor" tidak hanya digunakan di Jawa. 1. Pustaka C ++ memiliki std::vector<…>("array" berukuran dinamis). 2. CLR (.NET runtime) juga membedakan antara "array" dan "vektor", yang terakhir menjadi kasus khusus dari yang pertama, yaitu satu dimensi, yang berbasis nol). Perbedaan itu penting karena ada optimasi khusus untuk vektor. 3. Dalam matematika, sebuah n- angka dari bilangan real juga kadang-kadang disebut "vektor".
stakx

1
@ JoeroenVannevel Saya pikir Anda membuat kebingungan antara kelas Vector dan konsep vektor yang dapat dianggap sebagai array unidimensional.
C.Champagne

OT, jika Anda ingin jawaban dari orang-orang ilmu komputer, mengapa memposting di sini dan tidak di cs.stackexchange? Dan mengapa bendera java? Dari apa yang saya ingat dari kelas pemrograman saya, ada array dan kemudian ada daftar-tertaut. Kecuali untuk array, kontainer (vektor, daftar, peta, tumpukan, dll.) Diimplementasikan sebagai daftar tertaut.
imel96

2
Mengapa kita memanggil vektor array?
m3th0dman

Jawaban:


35

Dalam penggunaan umum, "larik" dapat berarti larik satu dimensi, atau larik multidimensi. Juga, dalam matematika, matriks adalah array 2 dimensi sedangkan vektor adalah array 1 dimensi.


8
Di luar topik: Dalam matematika, apakah "skalar" adalah array 0 dimensi?
stakx

6
@stakx: Ya, itu benar sekali. Biasanya skalar hanyalah skalar, tidak ada yang akan benar-benar menyebutnya "array 0 dimensi". Tapi idenya benar.
Greg Hewgill

2
Lebih akurat untuk mengatakan bahwa mereka semua tensor. Dari Wolfram Mathworld: "Tensor adalah generalisasi skalar (yang tidak memiliki indeks), vektor (yang memiliki tepat satu indeks), dan matriks (yang memiliki tepat dua indeks) hingga jumlah indeks yang berubah-ubah." (Rowland, Todd dan Weisstein, Eric W. "Tensor." Dari MathWorld - Sumber Daya Web Wolfram. Mathworld.wolfram.com/Tensor.html )
SOFe

Untuk apa yang bernilai, dalam matematika vektor bukan array 1 dimensi. Vektor adalah elemen ruang vektor, yaitu, set di mana elemen dapat ditambahkan dan dikalikan dengan skalar.
mlainz

Ruang vektor yang paling terkenal adalah R ^ n, himpunan "array" angka dengan penambahan elemen dan perkalian. Himpunan fungsi nyata juga merupakan ruang vektor, tetapi biasanya orang tidak menganggap fungsi sebagai array. Array karakter tidak akan menjadi ruang vektor, karena tidak ada pilihan penambahan dan perkalian yang jelas. Dalam jargon matematika, array adalah tuple atau urutan yang terbatas. Lihat en.wikipedia.org/wiki/Vector_(mathematics_and_physics) untuk lebih banyak contoh tupel yang bukan vektor.
mlainz

10

Vektor tidak persis array. Lagipula bukan yang klasik. Mereka adalah array dinamis. Mereka dapat diubah ukurannya sesuai kebutuhan daripada menjadi ukuran tetap. Mereka mirip dengan ArrayLists tetapi tidak persis sama.

ArrayLists berbeda dari Vektor dalam Vektor yang menyinkronkan operasi individu yang merupakan sesuatu yang tidak Anda inginkan untuk tujuan konkurensi khususnya per Jon Skeet . Dengan demikian Vektor telah ditinggalkan karena ArrayList tetapi beberapa masih menyebutnya Vektor.

The Nama ini awalnya berasal dari istilah matematika untuk matriks 1 dimensi. Meskipun struktur sebenarnya adalah n-tuple .


2
Saya pikir Anda membuat kebingungan antara kelas Vector dan konsep vektor yang dapat dianggap sebagai array unidimensi dan juga catatan khusus untuk Java.
C.Champagne

@ C.Champagne Dia menggunakan contoh Java jadi itulah yang saya berikan padanya. Saya telah menambahkan definisi untuk konstruk matematika, yang notabene secara teknis juga bukan "vektor".
Insinyur Dunia

2
Saya dengan @Campagne. Jika mereka berarti Vektor (kelas) teks akan menggunakan huruf V. Mereka menggunakan huruf kecil v yang menunjukkan definisi klasik (bukan kelas) vektor.
Rig

Um, vektor disebut vektor dalam matematika . Apa maksud Anda, "secara teknis juga bukan 'vektor'"?
Andres F.

@AndresF. Seperangkat angka seperti array atau "Vektor" akan menjadi n-tuple adalah pemahaman saya karena itu adalah kumpulan nilai yang terpisah.
Insinyur Dunia

4

Biasanya, vektor dan array adalah hal yang sama dan digunakan secara bergantian saat pemrograman. Itu ada di sebagian besar tempat, jadi Anda tidak perlu terlalu khawatir tentang hal itu.

Yang mengatakan, bahasa tidak tepat dan kami kadang-kadang memiliki kata-kata yang memiliki arti yang berbeda dalam konteks yang berbeda yang akhirnya berarti hal yang sama, atau satu kata yang memiliki dua atau lebih makna yang berbeda.

Dalam C array adalah serangkaian elemen data dari jenis yang sama yang disimpan dalam memori secara bersamaan. Java mewarisi makna itu. Ini tidak sama dengan Daftar atau Vektor, karena array lebih mendasar dari itu.

Sebuah vektor adalah membangun matematika didefinisikan sebagai objek yang dapat ditambahkan ke objek lain dari jenis yang sama, atau dikalikan dengan nomor nyata (atau kompleks) yang mengakibatkan vektor lain dari jenis yang sama. Ini juga memiliki beberapa properti lain yang sangat berguna.

Vektor memiliki dimensi . Jumlah minimum vektor berbeda yang harus digabungkan untuk mendapatkan setiap kemungkinan vektor jenis itu. Kecepatan dan percepatan adalah vektor 3 dimensi karena ruang memiliki 3 arah basa dan dengan menambahkan kelipatan dari tiga arah basa tersebut, Anda dapat memperoleh posisi apa pun di ruang angkasa. Posisi dalam bidang adalah vektor 2 dimensi, dan bilangan individu adalah vektor 1 dimensi.

Salah satu cara untuk merepresentasikan vektor dimensi n adalah dengan menggunakan array elemen n yang masing-masing mewakili berapa banyak setiap vektor basis yang harus Anda tambahkan untuk sampai ke vektor Anda.

Karena Anda dapat merepresentasikan vektor menggunakan arra elemen, dengan waktu, kedua konsep disamakan. Jadi, di banyak tempat, mereka adalah hal yang sama dan dalam beberapa bahasa array disebut vektor.

Kasus lain di mana satu kata memiliki dua arti yang berbeda, misalnya, dimensi . Definisi wikipedia tentang vektor sebagai larik 1 dimensi adalah contohnya. Anda tidak berbicara tentang dimensi vektor di sini. Anda berbicara tentang representasi komputer dari struktur data. Vektor 3-Dimensi dapat direpresentasikan dengan larik ukuran "1-dimensi" ukuran 3. 3 angka. Matriks 3x3 dapat diwakili oleh array "2-dimensi", yang oleh programmer disebut array array. Namun matriks 3x3 juga merupakan vektor matematika dimensi 9 (karena memiliki semua sifat vektor) dan memiliki 9 angka. Membingungkan, ya?

Bagaimanapun, saya pikir jawabannya sederhana: jangan khawatir. Itu semua tergantung konteks. Dua kata memiliki asal-usul yang berbeda, tetapi dalam konteks struktur data, ketika mereka mengatakan vektor mereka berarti persis array yang .


Saya pikir ini tidak benar. Di hampir semua dokumentasi yang saya jalankan di Array menyiratkan ukuran tetap, Vector menyiratkan struktur dapat (tetapi tidak harus) berukuran dinamis. Definisi matematika dari istilah-istilah tersebut sangat menyesatkan dalam konteks pemrograman.
Chuu

-1

Jawaban di atas menjelaskan mengapa kelas ini berbeda dari "Array" - dan saya menduga alasan nama yang berbeda digunakan adalah karena programmer dibantu dengan memiliki namespace yang terorganisir dengan baik - dengan kata lain jika Anda berbicara tentang "Vector" itu adalah jelaskan kelas apa yang Anda maksudkan, sedangkan jika semua kelas yang sama hanyalah array maka tidak akan sepenuhnya jelas.


-1

Saya pikir istilah "vektor" berasal dari std :: vektor C ++. Itu muncul sebelum Java dan C #.


3
Mohon (sangat) mempertimbangkan untuk menambahkan referensi eksternal untuk mendukung pendapat Anda.

-1

Itu hanya pengeditan yang ceroboh.

Versi awal Java tidak termasuk ArrayList. Alih-alih ArrayList, Vector digunakan. ArrayList ditambahkan kemudian dan sekarang digunakan sebagai pengganti Vector untuk sebagian besar tujuan. Saya berharap buku itu ditulis sebelum ArrayList ditambahkan, dan ketika teks diperbarui, referensi ke vektor ini tidak.

Saya sarankan Anda menghindari buku "pelajari semuanya dalam sepuluh menit" ini. Umumnya mereka ditulis dengan cepat dan sembrono. Tingkat pengetahuan ini tidak akan memberi Anda pekerjaan di toko yang serius.

Alih-alih mencari buku yang ditinjau dengan baik oleh pengguna yang diakui dari teknologi yang dibahas dan baca untuk pemahaman.


1
"Versi awal ... sudah"? Dan apa itu java.util.Vector?
Pasang kembali Monica - M. Schröder

1
Tidak digunakan lagi adalah java.util.Vector. :-)
Brian Knoblauch

-1

Vektor Istilah berasal dari teknik / fisika. Vektor mewakili garis 2 dan 3 dimensi yang memiliki arah. Sebagai contoh, misalkan sebuah proyektil memiliki kecepatan horisontal 20 m / s dan kecepatan vertikal 10 m / s. Jadi Anda akan mewakili ini sebagai (20,10). Ini terbang di semacam kanan diagonal, jadi sekarang lihat bagaimana vektor kecepatan matematis menjadi array alias vektor.


-2

Kami tidak memanggil vektor array, baik Anda salah mengerti sumber Anda atau sumber salah mengerti Jawa, atau keduanya.
Array adalah struktur data yang sangat berbeda dari Vector, yang berbeda dari Daftar lagi (yang menggunakan kode tempel Anda).

Tentu saja vektor matematika di Jawa dapat diimplementasikan menggunakan salah satu dari tiga mekanisme, dan di bawah tenda salah satu atau keduanya Vector dan Daftar dapat diimplementasikan menggunakan array.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.