Java - Bir diziye neden “vektör” diyoruz?


20

Java Programlama üzerine bir kitap okuyorum ve "vektör" kelimesinin tanımını anladığımı onaylamak istiyorum. Wikipedia, vektörün "Tek boyutlu bir dizi" olduğunu, kaynak http://tr.wikipedia.org/wiki/Vector olduğunu söylüyor .

Diziye sadece bir dizi çağırmak daha kolay olmaz mıydı? "Vektör" gibi süslü bir dil kullanmamız için herhangi bir neden var mı? Dizi ve vektör arasında fark var mı?


resim açıklamasını buraya girin

Kaynak: Kodlama Röportajının Kırılması, 4. Baskı, Gayle McDowell, sayfa 47.

SSS
S - Bunu neden english.stackexchange.com sitesinde yayınlamadınız?
C - Çünkü bence sadece bilgisayar bilimi odaklı insanlar iyi bir cevaba sahip olacaklar.


1
Vektörler, yerleşik senkronizasyon nedeniyle ArrayLists ile aynı değildir. Daha fazla bilgi için: stackoverflow.com/questions/2986296/…
Jeroen Vannevel

Konu Dışı: "Vektör" terimi sadece Java'da kullanılmamaktadır. 1. C ++ kitaplığında std::vector<…>(dinamik boyutlu "diziler") bulunur. 2. CLR (.NET çalışma zamanı) ayrıca "diziler" ve "vektörler" arasında ayrım yapar; ikincisi, öncekinin özel bir durumu, yani tek boyutlu, sıfır tabanlı olanlar). Bu ayrım önemlidir çünkü vektörler için özel optimizasyonlar vardır. 3. Matematikte, bir n- gerçek sayı dizisine bazen "vektör" de denir.
stakx

1
@JeroenVannevel Sanırım Vector sınıfı ile vektör kavramı arasında tek boyutlu bir dizi olarak düşünülebilecek bir karışıklık yarattınız.
C.Champagne

OT, bilgisayar bilimi insanlarından cevap almak istiyorsanız, neden cs.stackexchange'te değil de burada mesaj gönderin? Neden java bayrağı? Programlama sınıfımdan hatırladığım kadarıyla, dizi var ve sonra bağlantılı liste var. Dizi hariç kaplar (vektör, liste, harita, yığın vb.) Bağlantılı liste olarak uygulanır.
imel96

2
Neden bir vektöre dizi diyoruz?
m3th0dman

Yanıtlar:


35

Tipik kullanımda "dizi", tek boyutlu bir dizi veya çok boyutlu bir dizi anlamına gelebilir. Ayrıca, matematikte bir matris 2 boyutlu bir dizidir , vektör ise 1 boyutlu bir dizidir.


8
Konu Dışı: Matematikte, "skaler" 0 boyutlu bir dizi midir?
stakx

6
@stakx: Evet, bu kesinlikle doğru. Genellikle bir skaler sadece bir skalerdir, kimse buna "0-boyutlu dizi" demez. Ama fikir doğru.
Greg Hewgill

2
Hepsinin tensör olduğunu söylemek daha doğru. Wolfram Mathworld'den: "Tensörler, skalerlerin (indeksleri olmayan), vektörlerin (tam olarak bir indeksi olan) ve matrislerin (tam olarak iki indeksi olan) rasgele sayıda indekse genellemesidir." (Rowland, Todd ve Weisstein, Eric W. "Tensor." MathWorld'den - Bir Wolfram Web Kaynağı. Mathworld.wolfram.com/Tensor.html )
SOFe

Değer için, matematikte bir vektör 1 boyutlu bir dizi değildir. Bir vektör, bir vektör uzayının bir elementidir, yani elemanların skalerlerle eklenebileceği ve çarpılabileceği bir kümedir.
mlainz

En ünlü vektör uzayı, R ^ n, element bazında toplama ve çarpma ile sayıların "dizileri" kümesidir. Gerçek işlevler kümesi de bir vektör alanıdır, ancak genellikle insanlar işlevleri diziler olarak düşünmezler. Bir dizi karakter bir vektör alanı olmaz çünkü açık bir toplama ve çarpma seçeneği yoktur. Matematik jargonunda, bir dizi bir tuple veya sonlu bir dizidir. Vektör olmayan tuple örnekleri için en.wikipedia.org/wiki/Vector_(mathematics_and_physics) 'e bakınız .
mlainz

10

Vektörler tam olarak diziler değildir. Yine de klasik olanlar değil. Dinamik dizilerdir. Sabit boyutta olmak yerine gerektiğinde yeniden boyutlandırılabilirler. Bu nedenle ArrayLists'e benzerler, ancak tam olarak aynı değildirler.

ArrayLists, Vektörlerden farklıdır, çünkü Vektörler ayrı ayrı işlemleri senkronize eder, bu da özellikle Jon Skeet'e göre eşzamanlılık amacıyla istemediğiniz bir şeydir . Bu nedenle Vector, ArrayList lehine kullanımdan kaldırılmıştır, ancak bazıları hala Vector olarak adlandırmaktadır.

Adı orjinal 1 boyutlu bir matris matematik terimi elde edilir. Bu, yapının aslında bir n-demet olmasına rağmen .


2
Vector sınıfı ile tek boyutlu bir dizi olarak düşünülebilen vektör kavramı ve Java'ya özgü not arasındaki karışıklığı yarattığınızı düşünüyorum.
C.Champagne

@ C.Champagne Bir Java örneği kullandı, bu yüzden ona verdim. Bu arada teknik olarak bir "vektör" olmayan matematiksel yapı için tanım ekledim.
Dünya Mühendisi

2
@ C.Champagne ile birlikteyim. Eğer Vector (sınıf) demek isteselerdi metinde bir başlık V olurdu. Bir vektörün klasik (sınıf değil) tanımını gösteren küçük v harfini kullanırlardı.
Rig

Aa, vektörler matematik vektörler denir . Ne demek "teknik olarak bir" vektör "de değil"?
Andres F.Ağustos

@AndresF. Dizi veya "Vector" gibi bir sayı kümesi n-tuple olur, çünkü bu değerler ayrı bir koleksiyondur.
Dünya Mühendisi

4

Genellikle, vektör ve dizi aynı şeydir ve programlama sırasında birbirinin yerine kullanılır. Bu çoğu yerde, bu yüzden çoğu zaman bunun hakkında endişelenmemelisiniz.

Bununla birlikte, dil kesin değildir ve bazen farklı bağlamlarda aynı anlama gelen farklı anlamlara sahip kelimelere veya iki veya daha fazla farklı anlama sahip bir kelimeye sahibiz.

C'de bir dizi , bellekte bitişik olarak depolanan aynı tipte bir veri elemanı serisidir. Java bu anlamı devraldı. Bir Liste veya Vektör ile aynı değildir, çünkü diziler bunlardan daha basittir.

Bir vektör, aynı türden başka bir nesneye eklenebilir veya aynı türde başka bir vektör ile sonuçlanan herhangi bir gerçek (veya kompleks) sayısı ile çarpılarak bir nesne olarak tanımlanan bir matematiksel ve güvenilir olduğu bulunmuştur. Ayrıca çok kullanışlı olan birkaç özelliği daha vardır.

Bir vektörün boyutu vardır . Bu türdeki her olası vektörü elde etmek için birleştirilmesi gereken minimum farklı vektör sayısıdır. Hız ve ivme 3 boyutlu vektörlerdir, çünkü uzayda 3 taban yönü vardır ve bu üç taban yönün katlarını ekleyerek uzayda herhangi bir konum elde edebilirsiniz. Düzlemdeki konum 2 boyutlu bir vektördür ve tek tek sayılar 1 boyutlu vektörlerdir.

Boyut n'nin bir vektörünü temsil etmenin bir yolu, her biri vektörünüze ulaşmak için her bir baz vektörünün ne kadarını eklemeniz gerektiğini temsil eden bir n eleman dizisi kullanmaktır .

Zamanla elemanlar dizisini kullanarak bir vektörü temsil edebileceğiniz için, iki kavram eşitlendi. Yani, birçok yerde, sadece aynı şeydir ve bazı dillerde dizilere vektör denir.

Bir kelimenin iki farklı anlamı olduğu başka bir durum, örneğin boyuttur . Bir vektörün 1 boyutlu dizi olarak wikipedia tanımı buna bir örnektir. Burada vektör boyutundan bahsetmiyorsunuz. Veri yapısının bilgisayar temsili hakkında konuşuyorsunuz. 3 Boyutlu bir vektör, 3 boyutlu bir "1 boyutlu" dizi ile gösterilebilir. 3x3'lük bir matris, programcıların bir dizi dizisi olarak adlandırdığı "2 boyutlu" bir dizi ile temsil edilebilir. Yine de 3x3'lük bir matris, boyut 9'un bir matematiksel vektörüdür (bir vektörün tüm özelliklerine sahip olduğu için) ve 9 sayıya sahiptir. Kafa karıştırıcı ha?

Her neyse, bence cevap basit: endişelenme. Her şey bağlama bağlıdır. İki kelimenin farklı kökenleri vardır, ancak veri yapıları bağlamında, vektör dediklerinde tam olarak dizi anlamına gelirler .


Bunun doğru olduğunu düşünmüyorum. Array üzerinde çalıştığım neredeyse tüm belgelerde, sabit boyut anlamına gelir, Vector yapının dinamik olarak boyutlandırılabileceğini (ancak zorunlu olarak değil) ima eder. Terimlerin matematiksel tanımları programlama bağlamında inanılmaz derecede yanıltıcıdır.
Chuu

-1

Yukarıdaki cevaplar, bu sınıfın neden "Dizi" den farklı olduğunu açıklıyor - ve farklı bir adın kullanılmasının nedeninin, programcılara iyi organize edilmiş bir ad alanına sahip olması nedeniyle yardım edildiğinden şüpheleniyorum - başka bir deyişle, "Vektör" hakkında konuşursanız tam olarak hangi sınıfı kastettiğini temizle


-1

"Vektör" terimi C ++ 's std :: vector'dan geldiğini düşünüyorum. Java ve C # 'dan önce ortaya çıktı.


3
Lütfen (kesinlikle) düşüncelerinizi yedeklemek için harici bir referans eklemeyi düşünün.

-1

Sadece özensiz düzenleme.

Java'nın ilk sürümlerinde ArrayList bulunmuyordu. ArrayList yerine Vector kullanıldı. ArrayList daha sonra eklendi ve artık Vector yerine çoğu amaç için kullanılıyor. Kitabın ArrayList eklenmeden önce yazılmasını ve metin güncellendiğinde vektöre yapılan bu referansın olmamasını bekliyorum.

Bu tür "hepsini on dakikada öğren" kitabından kaçınmanızı öneririm. Genellikle hızlı ve özensiz yazılırlar. Bu bilgi düzeyi size ciddi bir mağazada iş bulamaz.

Bunun yerine, teknolojinin tanınmış kullanıcıları tarafından iyi incelenmiş kitapları araştırın ve anlamak için okuyun.


1
"Erken sürümler ... vardı"? Peki nedir java.util.Vector?
Monica'yı eski durumuna getirin - M. Schröder

1
Java.util.Vector nedir. :-)
Brian Knoblauch

-1

Vektör terimi mühendislik / fizikten gelir. Vektörler, yönü olan 2 ve 3 boyutlu çizgileri temsil eder. Örneğin, merminin yatay hızı 20 m / s ve dikey hızı 10 m / s olduğunu varsayalım. Böylece bunu (20,10) olarak temsil edersiniz. Bir tür diyagonal sağda uçuyor, şimdi matematiksel hız vektörlerinin vektörler olarak nasıl diziler haline geldiğini görün.


-2

Dizinizi vektör olarak adlandırmıyoruz, ya kaynağınızı yanlış anlamışsınız ya da kaynak yanlış anlaşılmış Java ya da her ikisi.
Bir dizi, bir Listeden (yapıştırılan kodunuzun kullandığı) tekrar farklı olan bir Vector'dan oldukça farklı bir veri yapısıdır.

Elbette Java'da bir matematiksel vektör üç mekanizmadan biri kullanılarak uygulanabilir ve başlık altında Vektör veya Liste dizileri kullanılarak uygulanabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.