web-gelistirme-sc.com

2D dizisinde, satırlarda veya sütunlarda hangisi önce gelir?

Bir 2D dizi oluştururken, ilk önce satır veya sütun belirtilip belirtilmediğini nasıl hatırlarsınız?

67
Matt B

Java, "satır majör" olarak kabul edilir, yani satırları önce yapar. Bunun nedeni, 2B dizisinin bir "dizi dizisi" olmasıdır.

Örneğin:

int[ ][ ] a = new int[2][4];  // Two rows and four columns.

a[0][0] a[0][1] a[0][2] a[0][3]

a[1][0] a[1][1] a[1][2] a[1][3]

Aynı zamanda daha fazla görselleştirilebilir:

a[0] ->  [0] [1] [2] [3]
a[1] ->  [0] [1] [2] [3]

İkinci resimde "dizi dizisi" yönü gösterilmektedir. İlk dizi {a[0] and a[1]} içerir ve bunların her biri dört element içeren bir dizidir, {[0][1][2][3]}.

TL; DR özeti:

Array[number of arrays][how many elements in each of those arrays]

Daha fazla açıklama için ayrıca bkz. Diziler - 2 boyutl.

76
MrHappyAsthma

Matt B bir anlamda doğru olsa da, hiçbir zaman geometrik matrisleri düşünmeden Java çok boyutlu diziyi düşünmeye yardımcı olabilir. Java multi-dim-dizileri sadece dizilerin dizileridir ve birinci "boyut" un her elemanı diğer elemanlardan farklı boyutlarda olabilir ya da aslında boş bir "sub" -array dizisini saklayabilir . Bu soruya ait yorumları görün

20
Kevin Welker

İçgüdüsel olarak biri geometrik olarak düşünüyor: yatay (X) eksen ve sonra dikey (Y) eksen. Ancak bu 2B dizili bir durumda değil, önce satırlar sonra sütunlar gelir.

Aşağıdaki analojiyi göz önünde bulundurun: geometride biri merdivene (X ekseni) yürür ve onu tırmanır (Y ekseni). Buna karşılık, Java içinde bir kişi merdiveni (sıralar) iner ve uzaklaşır (sütunlar).

11
Matt B

Hepsi dizinin görselleştirilmesine bağlıdır. Satırlar ve Sütunlar, dizinin kendisinin değil görselleştirme (muhtemelen sizin hayal gücünüzün) özellikleridir.

Tam olarak sormakla aynı şey "5" kırmızı mı yoksa yeşil mi?

Kırmızı çizebilirim, açgözlülükle çizebilirim değil mi? Renk, bir sayının ayrılmaz bir özelliği değildir. Aynı şekilde 2B diziyi bir satır ve sütun ızgarası olarak temsil etmek, bu dizinin varlığı için gerekli değildir.

2D dizisinde sadece birinci boyut ve ikinci boyut , ilgili her şey var Bunları görselleştirmek tamamen sizin zevkinizdir.

Char dizisi char[80][25] olduğunda, döndürülmüş konsolda yazdırmak isteyebilirim, böylece ekrana kaydırma yapmadan uyan 80 karakterden oluşan 25 satırım olur.

Uygulanabilirliği sağlamaya çalışacağım 2B diziyi satırlar ve sütunlar olarak gösterdiğim zaman hiçbir anlam ifade etmiyor: Diyelim ki 1 000 000 000 tam sayı dizisine ihtiyacım var. Makinemde 8 GB RAM var, bu yüzden yeterli belleğe sahibim, ancak var a = new int[1000000000] uygulamasını çalıştırmayı denerseniz, büyük olasılıkla OutOfMemory istisnasını alırsınız. Bunun nedeni bellek parçalanmasıdır - bu boyutta ardışık bellek bloğu yoktur. Bunun yerine, 2D dizileri 10 000 x 100 000 değerlerinizle oluşturabilirsiniz. Mantıksal olarak 1D dizisidir, bu nedenle tek bir değer dizisi olarak çizmek ve hayal etmek istersiniz, ancak teknik uygulama nedeniyle 2B'dir.

4
Sasha

Java'da çok boyutlu diziler yoktur. Dizi dizileri var. Yani:

int[][] array = new int[2][3];

Aslında iki diziden oluşur, her birinin üç öğesi vardır.

2
Eng.Fouad

Java öğesinde ilk önce satırlar yapılır, çünkü 2 boyutlu bir dizi iki ayrı dizi olarak kabul edilir. İlk satır 1 boyut dizisiyle başlar.

0
Nour Lababidi