Scala - Array

Scala menyediakan struktur data, yaitu array, yang menyimpan kumpulan elemen berurutan ukuran tetap dari tipe yang sama. Sebuah array digunakan untuk menyimpan kumpulan data, tetapi seringkali lebih berguna untuk menganggap array sebagai kumpulan variabel dari tipe yang sama.

Daripada mendeklarasikan variabel individual, seperti number0, number1, ..., dan number99, Anda mendeklarasikan satu variabel array seperti angka dan menggunakan angka [0], angka [1], dan ..., angka [99] untuk mewakili variabel individu. Tutorial ini memperkenalkan cara mendeklarasikan variabel array, membuat array, dan memproses array menggunakan variabel yang diindeks. Indeks elemen pertama dari sebuah array adalah angka nol dan indeks elemen terakhir adalah jumlah total elemen dikurangi satu.

Mendeklarasikan Variabel Array

Untuk menggunakan array dalam program, Anda harus mendeklarasikan variabel untuk mereferensikan array dan Anda harus menentukan jenis array yang dapat direferensikan oleh variabel.

Berikut ini adalah sintaks untuk mendeklarasikan variabel array.

Sintaksis

var z:Array[String] = new Array[String](3)

or

var z = new Array[String](3)

Di sini, z dideklarasikan sebagai larik String yang dapat menampung hingga tiga elemen. Nilai dapat ditetapkan ke elemen individu atau mendapatkan akses ke elemen individu, ini dapat dilakukan dengan menggunakan perintah seperti berikut -

Perintah

z(0) = "Zara"; z(1) = "Nuha"; z(4/2) = "Ayan"

Di sini, contoh terakhir menunjukkan bahwa secara umum indeks dapat berupa ekspresi apa pun yang menghasilkan bilangan bulat. Ada satu cara lagi untuk mendefinisikan sebuah larik -

var z = Array("Zara", "Nuha", "Ayan")

Gambar berikut mewakili sebuah array myList. Sini,myList memegang sepuluh nilai ganda dan indeksnya dari 0 hingga 9.

Memproses Array

Saat memproses elemen array, kita sering menggunakan struktur loop contol karena semua elemen dalam sebuah array memiliki tipe yang sama dan ukuran dari array diketahui.

Di bawah ini adalah contoh program yang menunjukkan cara membuat, menginisialisasi, dan memproses array -

Contoh

object Demo {
   def main(args: Array[String]) {
      var myList = Array(1.9, 2.9, 3.4, 3.5)
      
      // Print all the array elements
      for ( x <- myList ) {
         println( x )
      }

      // Summing all elements
      var total = 0.0;
      
      for ( i <- 0 to (myList.length - 1)) {
         total += myList(i);
      }
      println("Total is " + total);

      // Finding the largest element
      var max = myList(0);
      
      for ( i <- 1 to (myList.length - 1) ) {
         if (myList(i) > max) max = myList(i);
      }
      
      println("Max is " + max);
   }
}

Simpan program di atas dalam Demo.scala. Perintah berikut digunakan untuk mengkompilasi dan menjalankan program ini.

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

1.9
2.9
3.4
3.5
Total is 11.7
Max is 3.5

Scala tidak secara langsung mendukung berbagai operasi array dan menyediakan berbagai metode untuk memproses array dalam dimensi apa pun. Jika Anda ingin menggunakan metode yang berbeda maka Anda harus mengimporArray._ paket.

Array Multi-Dimensi

Ada banyak situasi di mana Anda perlu mendefinisikan dan menggunakan array multi-dimensi (yaitu, array yang elemennya adalah array). Misalnya, matriks dan tabel adalah contoh struktur yang dapat direalisasikan sebagai array dua dimensi.

Berikut ini adalah contoh pendefinisian array dua dimensi -

var myMatrix = ofDim[Int](3,3)

Ini adalah larik yang memiliki tiga elemen yang masing-masing merupakan larik bilangan bulat yang memiliki tiga elemen.

Coba program contoh berikut untuk memproses array multi-dimensi -

Contoh

import Array._

object Demo {
   def main(args: Array[String]) {
      var myMatrix = ofDim[Int](3,3)
      
      // build a matrix
      for (i <- 0 to 2) {
         for ( j <- 0 to 2) {
            myMatrix(i)(j) = j;
         }
      }
      
      // Print two dimensional array
      for (i <- 0 to 2) {
         for ( j <- 0 to 2) {
            print(" " + myMatrix(i)(j));
         }
         println();
      }
   }
}

Simpan program di atas dalam Demo.scala. Perintah berikut digunakan untuk mengkompilasi dan menjalankan program ini.

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

0 1 2
0 1 2
0 1 2

Array Bersambung

Coba contoh berikut yang menggunakan metode concat () untuk menggabungkan dua array. Anda bisa meneruskan lebih dari satu array sebagai argumen ke metode concat ().

Contoh

import Array._

object Demo {
   def main(args: Array[String]) {
      var myList1 = Array(1.9, 2.9, 3.4, 3.5)
      var myList2 = Array(8.9, 7.9, 0.4, 1.5)

      var myList3 =  concat( myList1, myList2)
      
      // Print all the array elements
      for ( x <- myList3 ) {
         println( x )
      }
   }
}

Simpan program di atas dalam Demo.scala. Perintah berikut digunakan untuk mengkompilasi dan menjalankan program ini.

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

1.9
2.9
3.4
3.5
8.9
7.9
0.4
1.5

Buat Array dengan Range

Gunakan metode range () untuk menghasilkan larik yang berisi urutan bilangan bulat yang meningkat dalam rentang tertentu. Anda dapat menggunakan argumen terakhir sebagai langkah untuk membuat urutan; jika Anda tidak menggunakan argumen terakhir, maka langkah akan diasumsikan sebagai 1.

Mari kita ambil contoh membuat array range (10, 20, 2): Ini berarti membuat array dengan elemen antara 10 dan 20 dan perbedaan jarak 2. Elemen dalam array adalah 10, 12, 14, 16, dan 18 .

Contoh lain: range (10, 20). Di sini perbedaan jarak tidak diberikan sehingga secara default mengasumsikan 1 elemen. Ini membuat array dengan elemen di antara 10 dan 20 dengan perbedaan rentang 1. Elemen dalam array adalah 10, 11, 12, 13,…, dan 19.

Program contoh berikut menunjukkan cara membuat array dengan rentang.

Contoh

import Array._

object Demo {
   def main(args: Array[String]) {
      var myList1 = range(10, 20, 2)
      var myList2 = range(10,20)

      // Print all the array elements
      for ( x <- myList1 ) {
         print( " " + x )
      }
      
      println()
      for ( x <- myList2 ) {
         print( " " + x )
      }
   }
}

Simpan program di atas dalam Demo.scala. Perintah berikut digunakan untuk mengkompilasi dan menjalankan program ini.

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

10 12 14 16 18
10 11 12 13 14 15 16 17 18 19

Metode Array Scala

Berikut ini adalah metode penting, yang dapat Anda gunakan saat bermain dengan array. Seperti yang ditunjukkan di atas, Anda harus mengimporArray._paket sebelum menggunakan salah satu metode yang disebutkan. Untuk daftar lengkap metode yang tersedia, silakan periksa dokumentasi resmi Scala.

Sr Tidak Metode dengan Deskripsi
1

def apply( x: T, xs: T* ): Array[T]

Membuat larik objek T, di mana T bisa berupa Unit, Double, Float, Long, Int, Char, Short, Byte, Boolean.

2

def concat[T]( xss: Array[T]* ): Array[T]

Menggabungkan semua larik menjadi satu larik.

3

def copy( src: AnyRef, srcPos: Int, dest: AnyRef, destPos: Int, length: Int ): Unit

Salin satu larik ke larik lainnya. Setara dengan System.arraycopy Java (src, srcPos, dest, destPos, length).

4

def empty[T]: Array[T]

Mengembalikan larik dengan panjang 0

5

def iterate[T]( start: T, len: Int )( f: (T) => T ): Array[T]

Mengembalikan larik yang berisi aplikasi berulang dari suatu fungsi ke nilai awal.

6

def fill[T]( n: Int )(elem: => T): Array[T]

Mengembalikan larik yang berisi hasil dari beberapa elemen komputasi beberapa kali.

7

def fill[T]( n1: Int, n2: Int )( elem: => T ): Array[Array[T]]

Mengembalikan larik dua dimensi yang berisi hasil dari beberapa penghitungan elemen beberapa kali.

8

def iterate[T]( start: T, len: Int)( f: (T) => T ): Array[T]

Mengembalikan larik yang berisi aplikasi berulang dari suatu fungsi ke nilai awal.

9

def ofDim[T]( n1: Int ): Array[T]

Membuat array dengan dimensi tertentu.

10

def ofDim[T]( n1: Int, n2: Int ): Array[Array[T]]

Membuat larik 2 dimensi

11

def ofDim[T]( n1: Int, n2: Int, n3: Int ): Array[Array[Array[T]]]

Membuat larik 3 dimensi

12

def range( start: Int, end: Int, step: Int ): Array[Int]

Mengembalikan larik yang berisi nilai spasi yang sama dalam beberapa interval bilangan bulat.

13

def range( start: Int, end: Int ): Array[Int]

Mengembalikan larik yang berisi urutan bilangan bulat yang meningkat dalam suatu rentang.

14

def tabulate[T]( n: Int )(f: (Int)=> T): Array[T]

Mengembalikan larik yang berisi nilai fungsi tertentu pada rentang nilai bilangan bulat mulai dari 0.

15

def tabulate[T]( n1: Int, n2: Int )( f: (Int, Int ) => T): Array[Array[T]]

Mengembalikan larik dua dimensi yang berisi nilai fungsi tertentu pada rentang nilai bilangan bulat mulai dari 0.