CodeGym /Java Blogu /Rastgele /Java'daki diziler
John Squirrels
Seviye
San Francisco

Java'daki diziler

grupta yayınlandı
Bir depo odasındaki dolapları hayal edin. Her birinin kendi numarası vardır ve her biri bir miktar Bagaj nesnesi saklar. Ya da her çeşit şarabın numaralandırıldığı ve içkinizin numarasını vererek sipariş verdiğiniz bir şarap listesi. Veya ilk sırada "Adams"ın ve sonda "Zimmer"in kayıtlı olduğu öğrencilerin bir listesi. Ya da bir uçakta her birine numaralı bir koltuk atanan yolcuların listesi. Java'da diziler genellikle bu tür yapılarla, yani homojen veri kümeleriyle çalışmak için kullanılır.

CodeGym kursundaki diziler

CodeGym'de, Java Sözdizimi görevinin 7. Düzeyinde dizilerle çalışmaya başlarsınız. Dizilerle çalışma becerilerinizi pekiştirmek için çeşitli düzeylerde 8 görevin yanı sıra bunlara üç ders ayrılmıştır. Ancak kurs sırasında birçok kez dizilerle karşılaşacaksınız (özellikle Array sınıfı, Java Collections görevinde ve gelecekteki çalışmalarınızın bir parçası olarak çalışılacaktır .

dizi nedir?

Dizi, aynı türdeki öğeleri depolayan bir veri yapısıdır. Bunu bir dizi numaralı hücre gibi düşünebilirsiniz. Her hücreye bazı veriler koyabilirsiniz (hücre başına bir veri öğesi). Belirli bir hücreye numarası kullanılarak erişilir. Dizideki bir elemanın numarasına indeks de denir . Java'da bir dizi homojendir, yani tüm hücreleri aynı türden elemanlar içerir. Bu nedenle, bir tamsayı dizisi yalnızca tamsayıları ( int ), bir dizi diziyi - yalnızca dizeleri içerir ve Dog sınıfının oluşturduğumuz bir dizi örneği yalnızca Dog nesnelerini içerecektir. Başka bir deyişle Java, dizinin ilk hücresine tamsayı, ikinci hücresine String ve üçüncü hücresine Dog koymamıza izin vermez .Java'daki Diziler - 2

Bir dizi bildirmek

Bir diziyi nasıl bildirirsiniz?

Herhangi bir değişken gibi, Java'da bir dizi bildirilmelidir. Bu, iki yoldan biriyle yapılabilir. Eşdeğerdirler, ancak ilk yol Java stiliyle daha tutarlıdır. İkincisi, C dilinin bir mirasıdır: birçok C programcısı Java'ya geçmiştir ve kolaylık sağlamak için alternatif bir yöntem korunmuştur. Tablo, Java'da bir dizi bildirmenin iki yolunu da gösterir:
HAYIR. Dizi bildirme, Java sözdizimi örnekler Yorum
1.
dataType[] diziAdı;

int[] myArray;

Object[] 
arrayOfObjects;  
Bir diziyi bu şekilde bildirmeniz önerilir. Bu Java stilidir.
2.
veriTürü diziAdı[];

int myArray[];

Object 
arrayOfObjects[];
C/C++'dan devralınan dizi bildirim yöntemi Java'da çalışır
Her iki durumda da dataType , dizideki değişkenlerin türüdür. Örneklerde iki dizi bildirdik. Biri int s'yi, diğeri ise Object nesnelerini saklar . Bu nedenle, bir dizi bildiriminin bir adı ve türü vardır (dizinin öğelerinin türü). DiziAdı dizinin adıdır.

dizi oluşturma

Bir diziyi nasıl yaratırsınız?

Diğer herhangi bir nesne gibi, new operatörünü kullanarak bir Java dizisi oluşturabilir, yani bellekte onun için bir yer ayırabilirsiniz . Bu şekilde yapılır:

new typeOfArray[length]; 
burada typeOfArray , dizinin türü ve uzunluğu, bir tam sayı ( ) olarak ifade edilen uzunluğudur (yani hücre sayısı) int. Ancak burada yalnızca dizi için bellek ayırdığımıza dikkat edin - bildirilen diziyi daha önce bildirilen herhangi bir değişkenle ilişkilendirmedik. Genellikle, bir dizi önce bildirilir ve ardından örneklenir, örneğin:

int[] myArray; // Array declaration
myArray = new int[10]; // Create (allocate memory for) an array of 10 ints
Burada , derleyiciye 10 hücreden oluştuğunu (her biri bir tamsayı içerecek) bildiren myArray adında bir tamsayı dizisi oluşturduk . Ancak, bildirildiği anda bir dizi oluşturmak için aşağıdaki kısaltılmış sözdizimini kullanmak çok daha yaygındır:

int[] myArray = new int [10]; // Declare the array and allocate memory "in one blow"
Lütfen aklınızda bulundurun:new operatörü kullanılarak bir dizi oluşturulduktan sonra , hücreleri varsayılan değerleri içerir. Sayısal türler için (örneğimizde olduğu gibi), varsayılan değer 0'dır, boolean türü için false ve referans türleri için null'dur . Böylece, bu ifadeyi çalıştırdıktan sonra

int[] myArray = new int[10];
on tam sayıdan oluşan bir dizi elde ederiz ve program değerleri değiştirmek için bir şey yapana kadar her hücre 0 içerir.

Java'da dizi uzunluğu

Yukarıda söylediğimiz gibi, bir dizinin uzunluğu, dizinin tutmak için tasarlandığı öğe sayısıdır. Bir dizinin uzunluğu oluşturulduktan sonra değiştirilemez. lütfen aklınızda bulundurundizi öğeleri Java'da sıfırdan başlayarak numaralandırılır. Böylece, 10 elemanlı bir dizimiz varsa, ilk elemanın indeksi 0 ve son elemanın indeksi 9'dur. Dizi uzunluğunu uzunlukJava'da Diziler - 3 değişkenini kullanarak elde edebilirsiniz . Örneğin:

int[] myArray = new int[10]; // Create an int array for 10 elements and name it myArray
System.out.println(myArray.length); // Display the array's length, i.e. the number of elements we can put into the array
Çıktı:

10

Bir diziyi başlatma ve öğelerine erişme

Artık Java'da dizi oluşturmayı biliyoruz. İşlem bize boş bir dizi değil, varsayılan değerlerle dolu bir dizi verir. Örneğin, bir int dizisi için bu 0'dır ve herhangi bir başvuru türünden bir dizimiz varsa, her hücredeki varsayılan değer null olur . Bir dizi öğesine (örneğin, değerini ayarlamak, ekranda görüntülemek veya onunla bazı işlemler gerçekleştirmek için) dizinine göre erişiriz. Dizi başlatma, bir diziyi belirli değerlerle (varsayılan dışında) doldurma işlemidir. Örnek: 4 mevsim için bir dizi oluşturalım ve mevsim isimleri ile dolduralım.

String[] seasons = new String[4]; /* Declare and create an array. Java allocates memory for an array of 4 strings, and each cell is set to null (since String is a reference type) */ 

seasons[0] = "Winter"; /* We set the first cell, i.e. the cell with index zero, to "Winter". Here we access the zeroth element of the array and write a specific value to it. */ 
seasons[1] = "Spring"; // We follow a similar procedure for the cell with index 1 (the second cell)
seasons[2] = "Summer"; // ... index 2
seasons[3] = "Autumn"; // and finally, index 3
Artık dizimizin dört hücresine de mevsimlerin isimleri yazılmıştır. Diziyi, bildirimi ve başlatmayı birleştirerek farklı bir şekilde başlatabiliriz:

String[] seasons = new String[] {"Winter", "Spring", "Summer", "Autumn"};
Dahası, yeni operatör atlanabilir:

String[] seasons = {"Winter", "Spring", "Summer", "Autumn"};

Java'da ekranda bir diziyi nasıl görüntülersiniz?

Bir for döngüsü kullanarak dizi öğelerini ekranda (yani konsolda) görüntüleyebilirsiniz . Bir diziyi görüntülemenin daha kısa başka bir yolu, " Dizilerle çalışmak için yararlı yöntemler " başlıklı paragrafta ele alınacaktır . Bu arada, bir dizinin döngü kullanılarak görüntülendiği bu örneğe bir göz atın:

String[] seasons = new String {"Winter", "Spring", "Summer", "Autumn"}; 
for (int i = 0; i < 4; i++) {
System.out.println(seasons[i]); 
}
Program aşağıdakileri gösterecektir:

Winter 
Spring 
Summer 
Autumn

Java'da tek boyutlu ve çok boyutlu diziler

Peki ya bir dizi sayı, dizi veya başka nesne değil de bir dizi dizi oluşturmak istiyorsak? Java bunu yapmanıza izin verir. Zaten aşina olduğumuz dizi türü ( int[] myArray = new int[8] ), tek boyutlu dizi olarak bilinir. Ancak bir dizi dizisine iki boyutlu dizi denir. Satır numarası ve sütun numarası olan bir tablo gibidir. Ya da lineer cebirin temellerini öğrendiyseniz, bunu bir matris olarak düşünebilirsiniz. Java'da Diziler - 4Neden böyle dizilere ihtiyacımız var? Matrisleri ve tabloları ve benzer yapıya sahip diğer nesneleri programlamak için. Örneğin, bir satranç tahtası 8x8'lik bir dizi ile temsil edilebilir. Çok boyutlu bir dizi aşağıdaki gibi bildirilir ve oluşturulur:

Int[][] myTwoDimentionalArray = new int[8][8];
Bu dizinin tam olarak 64 öğesi vardır: myTwoDimentionalArray[0][0] , myTwoDimentionalArray[0][1] , myTwoDimentionalArray[1][0] , myTwoDimentionalArray[1][1] ve benzeri , myTwoDimentionalArray[7][7]' ye kadar . Yani onu bir satranç tahtasını temsil etmek için kullanırsak, A1 myTwoDimentionalArray[0][0]' a karşılık gelir ve E2 myTwoDimentionalArray[4][1]' e karşılık gelir . Ama bunu ne kadar ileri götürebiliriz? Java'da, bir dizi dizisi belirtebilirsiniz... bir dizi dizi dizisi vb. Tabii ki, üç boyutlu ve daha yüksek boyutlu diziler çok nadiren kullanılır. Bununla birlikte, örneğin bir Rubik küpünü programlamak için üç boyutlu bir dizi kullanabilirsiniz.

Dizilerle çalışmak için kullanışlı yöntemler

Java, dizilerle çalışmak için java.util.Arrays sınıfına sahiptir . Genel olarak, dizilerde gerçekleştirilen en yaygın işlemler, başlatma (öğelerle doldurma), bir öğeyi alma (dizine göre), sıralama ve aramadır. Dizileri aramak ve sıralamak başka bir günün konusudur. Bir yandan, birkaç arama ve sıralama algoritmasını kendiniz yazmak iyi bir uygulamadır. Öte yandan, en iyi algoritmaların tümü zaten uygulanmış ve standart Java kitaplıklarına dahil edilmiştir ve bunları yasal olarak kullanabilirsiniz. İşte bu sınıfta üç yararlı yöntem.

Bir diziyi sıralama

Void sort(int[] myArray, int fromIndex, int toIndex) yöntemi, bir tamsayı dizisini veya alt diziyi artan düzende sıralar.

Bir dizide eleman aranıyor

int binarySearch(int[] dizim, int fromIndex, int toIndex, int key) . Bu yöntem , anahtar öğeyi, fromIndex'ten toIndex'e kadar sıralanmış bir myArray dizisi veya alt dizisinde arar . Öğe bulunursa, dizinini döndürür. Aksi takdirde, (-fromIndex)-1 döndürür .

Bir diziyi bir dizgeye dönüştürme

String toString(int[] myArray) yöntemi, bir diziyi bir dizgeye dönüştürür. Java'da diziler toString() öğesini geçersiz kılmaz . Bunun anlamı, " Ekranda bir dizi göster " başlıklı paragrafta olduğu gibi her seferinde bir öğe yerine tüm bir diziyi aynı anda (System.out.println(myArray)) görüntülemeye çalışırsanız , şu anlama gelir: sınıfın adı ve dizinin onaltılık karması ( Object.toString() tarafından tanımlanır ). Yeni başlayan biriyseniz, toString yöntemiyle ilgili açıklamayı anlamayabilirsiniz . Başlangıçta buna gerek yoktur, ancak bu yöntemi kullanmak bir diziyi görüntülemeyi kolaylaştırır. Java, döngü kullanmadan bir diziyi kolayca görüntülemenizi sağlar. Aşağıdaki örnek bunu göstermektedir.

Sıralama, ikili Arama ve toString kullanan bir örnek

Bir tamsayı dizisi oluşturalım, toString kullanarak gösterelim, sort yöntemini kullanarak sıralayalım ve sonra içinde bir sayı bulalım.

class Main {
    public static void main(String[] args) {
        int[] array = {1, 5, 4, 3, 7}; // Declare and initialize the array
        System.out.println(array); // Try to display our array without using the toString method — the result is a hexadecimal number
        System.out.println(Arrays.toString(array)); // Display the array correctly 
        Arrays.sort(array, 0, 4); // Sort the entire array from the zeroth to the fourth element
        System.out.println(Arrays.toString(array)); // Display the sorted array
        int key = Arrays.binarySearch(array, 5); // Look for the number 5 in the sorted array. 
        // The binarySearch method will return the index of the array element we are searching for
        System.out.println(key); // Display the index of the number we searched for 
System.out.println(Arrays.binarySearch(array, 0)); // Now try to find a number that isn't in the array, 
        // and immediately display the result

    }
}
Çıktı:

[I@1540e19d 
[1, 5, 4, 3, 7] 
[1, 3, 4, 5, 7] 
3 
-1
İlk dize, diziyi toString kullanmadan görüntüleme girişimidir . İkincisi, toString kullanılarak görüntülenen dizidir . Üçüncüsü, sıralanmış dizidir. Dördüncüsü, sıralanan dizide (5) aradığımız sayının indeksidir (sıfırdan saydığımızı unutmayın, bu nedenle dizinin dördüncü elemanının indeksi 3'tür). Beşinci dizide -1 görüyoruz. Bu geçersiz bir dizi dizini. Aradığımız sayının (bu durumda 0) dizide olmadığını gösterir.

Array sınıfındaki yöntemler hakkında daha fazla bilgi

Arrays sınıfı ve kullanımı — Bu makalede, Array sınıfındaki bazı yöntemler açıklanmaktadır.
Arrays sınıfı, dizilerle çalışmak için 18 önemli yöntem içerir.

Özetle diziler

  • Bir dizinin temel özellikleri: içine yerleştirilen verinin türü, adı ve uzunluğu.
    Son özellik, dizi oluşturulduğunda belirlenir (dizi için bellek ayrıldığında). İlk iki özellik, dizi bildirildiğinde belirlenir.

  • Dizi boyutu (hücre sayısı) bir int olmalıdır

  • Bir dizinin uzunluğunu oluşturduktan sonra değiştirmek imkansızdır.

  • Bir dizi öğesine dizini ile erişilebilir.

  • Dizilerdeki öğeler, Java'daki diğer her şey gibi sıfırdan başlayarak numaralandırılır.

  • Bir dizi oluşturulduktan sonra varsayılan değerlerle doldurulur.

  • Java'daki diziler, C++'daki dizilerle aynı değildir. Neredeyse dinamik dizilere işaretçiler gibidirler.

Diziler hakkında faydalı materyaller

Diziler hakkında daha fazla bilgi edinmek ister misiniz? Aşağıdaki makalelere göz atın. Bu konuda pek çok ilginç ve faydalı materyal var.
Yorumlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION