Koleksi Scala - Panduan Cepat

Scala memiliki seperangkat perpustakaan koleksi yang kaya. Koleksi adalah wadah barang. Kontainer tersebut dapat diurutkan, kumpulan item linier seperti List, Tuple, Option, Map, dll. Koleksi mungkin memiliki jumlah elemen yang berubah-ubah atau dibatasi ke nol atau satu elemen (misalnya, Opsi).

Koleksi mungkin strict atau lazy. Koleksi malas memiliki elemen yang mungkin tidak menghabiskan memori hingga diakses, sepertiRanges. Selain itu, koleksi mungkinmutable (isi referensi dapat berubah) atau immutable(hal yang dirujuk referensi tidak pernah berubah). Perhatikan bahwa koleksi yang tidak dapat diubah mungkin berisi item yang dapat diubah.

Untuk beberapa masalah, koleksi yang dapat diubah berfungsi lebih baik, dan untuk masalah lainnya, koleksi yang tidak dapat diubah berfungsi lebih baik. Jika ragu, lebih baik memulai dengan koleksi yang tidak dapat diubah dan mengubahnya nanti jika Anda membutuhkan yang bisa diubah.

Bab ini menyoroti jenis koleksi yang paling umum digunakan dan operasi yang paling sering digunakan atas koleksi tersebut.

Sr Tidak Koleksi dengan Deskripsi
1

Scala Lists

Daftar Scala [T] adalah daftar tertaut dari tipe T.

2

Scala Sets

Satu set adalah kumpulan elemen berbeda berpasangan dari jenis yang sama.

3

Scala Maps

Peta adalah kumpulan pasangan kunci / nilai. Nilai apa pun dapat diambil berdasarkan kuncinya.

4

Scala Tuples

Tidak seperti larik atau daftar, tupel dapat menampung objek dengan tipe berbeda.

5

Scala Options

Opsi [T] menyediakan wadah untuk nol atau satu elemen dari tipe tertentu.

6

Scala Iterators

Sebuah iterator bukanlah sebuah koleksi, melainkan sebuah cara untuk mengakses elemen dari sebuah koleksi satu per satu.

Scala dapat diinstal pada sistem rasa UNIX atau berbasis Windows. Sebelum Anda mulai menginstal Scala di komputer Anda, Anda harus menginstal Java 1.8 atau yang lebih baru di komputer Anda.

Ikuti langkah-langkah yang diberikan di bawah ini untuk menginstal Scala.

Langkah 1: Verifikasi Instalasi Java Anda

Pertama-tama, Anda harus menginstal Java Software Development Kit (SDK) di sistem Anda. Untuk memverifikasi ini, jalankan salah satu dari dua perintah berikut tergantung pada platform yang Anda kerjakan.

Jika penginstalan Java sudah dilakukan dengan benar, maka versi dan spesifikasi penginstalan Java Anda saat ini akan ditampilkan. Output sampel diberikan dalam tabel berikut.

Peron Perintah Output Sampel
Windows

Buka Command Console dan ketik -

\>java -version

Versi Java "1.8.0_31"

Java (TM) SE Run Time

Lingkungan (build 1.8.0_31-b31)

Server 64-bit Java Hotspot (TM)

VM (build 25.31-b07, mode campuran)

Linux

Buka terminal Command dan ketik -

$java -version

Versi Java "1.8.0_31"

Buka JDK Runtime Environment (rhel-2.8.10.4.el6_4-x86_64)

Buka VM Server JDK 64-Bit (build 25.31-b07, mode campuran)

Kami berasumsi bahwa pembaca tutorial ini telah menginstal Java SDK versi 1.8.0_31 di sistem mereka.

Jika Anda tidak memiliki Java SDK, unduh versi saat ini dari https://www.oracle.com/technetwork/java/javase/downloads/index.html dan instal.

Langkah 2: Setel Lingkungan Java Anda

Setel variabel lingkungan JAVA_HOME agar mengarah ke lokasi direktori dasar tempat Java diinstal pada mesin Anda. Sebagai contoh,

Sr Tidak Platform & Deskripsi
1

Windows

Setel JAVA_HOME ke C: \ ProgramFiles \ java \ jdk1.8.0_31

2

Linux

Ekspor JAVA_HOME = / usr / local / java-current

Tambahkan jalur lengkap lokasi kompilator Java ke Jalur Sistem.

Sr Tidak Platform & Deskripsi
1

Windows

Tambahkan String "C: \ Program Files \ Java \ jdk1.8.0_31 \ bin" di akhir variabel sistem PATH.

2

Linux

Ekspor PATH = $ PATH: $ JAVA_HOME / bin /

Jalankan perintahnya java -version dari command prompt seperti dijelaskan di atas.

Langkah 3: Instal Scala

Anda dapat mengunduh Scala dari www.scala-lang.org/downloads . Pada saat menulis tutorial ini, saya mengunduh 'scala-2.13.1-installer.jar'. Pastikan Anda memiliki hak istimewa admin untuk melanjutkan. Sekarang, jalankan perintah berikut di command prompt -

Peron Perintah & Keluaran Deskripsi
Windows

\> java -jar scala-2.13.1-installer.jar \>

Perintah ini akan menampilkan wizard penginstalan, yang akan memandu Anda menginstal Scala di mesin windows Anda. Selama instalasi, itu akan meminta perjanjian lisensi, cukup menerimanya dan selanjutnya akan menanyakan jalur di mana Scala akan dipasang. Saya memilih jalur default yang diberikan "C: \ Program Files \ Scala", Anda dapat memilih jalur yang sesuai sesuai kenyamanan Anda.

Linux

Command -

$ java -jar scala-2.13.1-installer.jar

Output -

Selamat datang di instalasi Scala 2.13.1!

Beranda ada di - http://Scala-lang.org/

tekan 1 untuk melanjutkan, 2 untuk keluar, 3 untuk menampilkan kembali

1 ................................................

[Mulai membongkar]

[Paket pemrosesan: Instalasi Paket Perangkat Lunak (1/1)]

[Pembongkaran selesai]

[Pemasangan konsol selesai]

Selama instalasi, itu akan meminta perjanjian lisensi, untuk menerimanya tipe 1 dan itu akan menanyakan jalur di mana Scala akan dipasang. Saya memasukkan / usr / local / share, Anda dapat memilih jalur yang sesuai sesuai kenyamanan Anda.

Terakhir, buka command prompt dan ketik Scala -versiondan tekan Enter. Anda harus melihat yang berikut -

Peron Perintah Keluaran
Windows

\> scala -version

Scala code runner versi 2.13.1 - Hak Cipta 2002-2019, LAMP / EPFL dan Lightbend, Inc.

Linux

$ scala -version

Scala code runner versi 2.13.1 - Hak Cipta 2002-2019, LAMP / EPFL dan Lightbend, Inc.tut

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 dengan tipe yang sama.

Alih-alih mendeklarasikan variabel individual, seperti number0, number1, ..., dan number99, Anda mendeklarasikan satu variabel array seperti bilangan dan menggunakan bilangan [0], bilangan [1], dan ..., bilangan [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.

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

Berikut ini adalah contoh mendefinisikan 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

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 rentang 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

Scala menyediakan struktur data, yaitu ArrayBuffer, yang dapat berubah ukuran jika ukuran awal gagal. Karena array berukuran tetap dan lebih banyak elemen tidak dapat ditempati dalam sebuah array, ArrayBuffer adalah alternatif untuk array yang ukurannya fleksibel.

Secara internal ArrayBuffer mempertahankan larik ukuran saat ini untuk menyimpan elemen. Ketika elemen baru ditambahkan, ukuran dicentang. Jika array yang mendasari penuh maka array baru yang lebih besar dibuat dan semua elemen disalin ke array yang lebih besar.

Mendeklarasikan Variabel ArrayBuffer

Berikut ini adalah sintaks untuk mendeklarasikan variabel ArrayBuffer.

Sintaksis

var z = ArrayBuffer[String]()

Di sini, z dideklarasikan sebagai buffer array dari Strings yang awalnya kosong. Nilai dapat ditambahkan dengan menggunakan perintah seperti berikut -

Perintah

z += "Zara";
z += "Nuha";
z += "Ayan";

Memproses ArrayBuffer

Di bawah ini adalah contoh program untuk menunjukkan cara membuat, menginisialisasi, dan memproses ArrayBuffer -

Contoh

import scala.collection.mutable.ArrayBuffer 
object Demo {
   def main(args: Array[String]) = {
      var myList = ArrayBuffer("Zara","Nuha","Ayan")
      println(myList);
      // Add an element
      myList += "Welcome";
      // Add two element
      myList += ("To", "Tutorialspoint");
      println(myList);
      // Remove an element
      myList -= "Welcome";
      // print second element
      println(myList(1));
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

ArrayBuffer(Zara, Nuha, Ayan)
ArrayBuffer(Zara, Nuha, Ayan, Welcome, To, Tutorialspoint)
Nuha

Daftar Scala sangat mirip dengan array yang artinya, semua elemen daftar memiliki tipe yang sama tetapi ada dua perbedaan penting. Pertama, daftar tidak dapat diubah, yang berarti elemen daftar tidak dapat diubah oleh tugas. Kedua, daftar mewakili daftar tertaut sedangkan array datar.

Jenis daftar yang memiliki elemen tipe T ditulis sebagai List[T].

Coba contoh berikut, berikut beberapa daftar yang ditentukan untuk berbagai tipe data.

// List of Strings
val fruit: List[String] = List("apples", "oranges", "pears")
// List of Integers
val nums: List[Int] = List(1, 2, 3, 4)
// Empty List.
val empty: List[Nothing] = List()
// Two dimensional list
val dim: List[List[Int]] = List(
   List(1, 0, 0),
   List(0, 1, 0),
   List(0, 0, 1)
)

Semua daftar dapat ditentukan dengan menggunakan dua blok bangunan dasar, satu ekor Nil dan ::, yang diucapkan cons. Nihil juga mewakili daftar kosong. Semua daftar di atas dapat didefinisikan sebagai berikut.

// List of Strings
val fruit = "apples" :: ("oranges" :: ("pears" :: Nil))
// List of Integers
val nums = 1 :: (2 :: (3 :: (4 :: Nil)))
// Empty List.
val empty = Nil
// Two dimensional list
val dim = (1 :: (0 :: (0 :: Nil))) ::
   (0 :: (1 :: (0 :: Nil))) ::
   (0 :: (0 :: (1 :: Nil))) :: Nil

Operasi Dasar pada Daftar

Semua operasi pada daftar dapat diekspresikan dalam tiga metode berikut.

Sr Tidak Metode & Deskripsi
1

head

Metode ini mengembalikan elemen pertama dari daftar.

2

tail

Metode ini mengembalikan daftar yang terdiri dari semua elemen kecuali yang pertama.

3

isEmpty

Metode ini mengembalikan nilai true jika daftar kosong jika tidak salah.

Contoh berikut menunjukkan cara menggunakan metode di atas.

Contoh

object Demo {
   def main(args: Array[String]) {
      val fruit = "apples" :: ("oranges" :: ("pears" :: Nil))
      val nums = Nil
      println( "Head of fruit : " + fruit.head )
      println( "Tail of fruit : " + fruit.tail )
      println( "Check if fruit is empty : " + fruit.isEmpty )
      println( "Check if nums is empty : " + nums.isEmpty )
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

Head of fruit : apples
Tail of fruit : List(oranges, pears)
Check if fruit is empty : false
Check if nums is empty : true

Daftar Gabungan

Anda bisa menggunakan keduanya ::: operator atau List.:::() metode atau List.concat()metode untuk menambahkan dua atau lebih daftar. Silakan temukan contoh berikut yang diberikan di bawah ini -

Contoh

object Demo {
   def main(args: Array[String]) {
      val fruit1 = "apples" :: ("oranges" :: ("pears" :: Nil))
      val fruit2 = "mangoes" :: ("banana" :: Nil)
      // use two or more lists with ::: operator
      var fruit = fruit1 ::: fruit2
      println( "fruit1 ::: fruit2 : " + fruit )
      // use two lists with Set.:::() method
      fruit = fruit1.:::(fruit2)
      println( "fruit1.:::(fruit2) : " + fruit )
      // pass two or more lists as arguments
      fruit = List.concat(fruit1, fruit2)
      println( "List.concat(fruit1, fruit2) : " + fruit  )
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

fruit1 ::: fruit2 : List(apples, oranges, pears, mangoes, banana)
fruit1.:::(fruit2) : List(mangoes, banana, apples, oranges, pears)
List.concat(fruit1, fruit2) : List(apples, oranges, pears, mangoes, banana)

Membuat Daftar Seragam

Kamu dapat memakai List.fill()metode membuat daftar yang terdiri dari nol atau lebih salinan dari elemen yang sama. Coba program contoh berikut.

Contoh

object Demo {
   def main(args: Array[String]) {
      val fruit = List.fill(3)("apples") // Repeats apples three times.
      println( "fruit : " + fruit  )
      val num = List.fill(10)(2)         // Repeats 2, 10 times.
      println( "num : " + num  )
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

fruit : List(apples, apples, apples)
num : List(2, 2, 2, 2, 2, 2, 2, 2, 2, 2)

Menabulasi Fungsi

Anda dapat menggunakan fungsi bersama dengan List.tabulate()metode untuk diterapkan pada semua elemen daftar sebelum membuat daftar tabulasi. Argumennya sama seperti List.fill: daftar argumen pertama memberikan dimensi daftar yang akan dibuat, dan yang kedua mendeskripsikan elemen daftar. Satu-satunya perbedaan adalah bahwa alih-alih elemen diperbaiki, mereka dihitung dari suatu fungsi.

Coba program contoh berikut.

Contoh

object Demo {
   def main(args: Array[String]) {
      // Creates 5 elements using the given function.
      val squares = List.tabulate(6)(n => n * n)
      println( "squares : " + squares  )
      val mul = List.tabulate( 4,5 )( _ * _ )      
      println( "mul : " + mul  )
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

squares : List(0, 1, 4, 9, 16, 25)
mul : List(List(0, 0, 0, 0, 0), List(0, 1, 2, 3, 4), 
   List(0, 2, 4, 6, 8), List(0, 3, 6, 9, 12))

Urutan Daftar Terbalik

Kamu dapat memakai List.reversemetode untuk membalikkan semua elemen daftar. Contoh berikut menunjukkan penggunaan.

Contoh

object Demo {
   def main(args: Array[String]) {
      val fruit = "apples" :: ("oranges" :: ("pears" :: Nil))
      println( "Before reverse fruit : " + fruit )
      println( "After reverse fruit : " + fruit.reverse )
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

Before reverse fruit : List(apples, oranges, pears)
After reverse fruit : List(pears, oranges, apples)

Scala menyediakan struktur data, yaitu ListBuffer, yang lebih efisien daripada Daftar sambil menambahkan / menghapus elemen dalam daftar. Ini menyediakan metode untuk menambahkan, menambahkan elemen ke daftar.

Mendeklarasikan Variabel ListBuffer

Berikut ini adalah sintaks untuk mendeklarasikan variabel ListBuffer.

Sintaksis

var z = ListBuffer[String]()

Di sini, z dideklarasikan sebagai buffer daftar String yang awalnya kosong. Nilai dapat ditambahkan dengan menggunakan perintah seperti berikut -

Perintah

z += "Zara";
z += "Nuha";
z += "Ayan";

Memproses ListBuffer

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

Contoh

import scala.collection.mutable.ListBuffer 
object Demo {
   def main(args: Array[String]) = {
      var myList = ListBuffer("Zara","Nuha","Ayan")
      println(myList);
      // Add an element
      myList += "Welcome";
      // Add two element
      myList += ("To", "Tutorialspoint");
      println(myList);
      // Remove an element
      myList -= "Welcome";
      // print second element
      println(myList(1));
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

ListBuffer(Zara, Nuha, Ayan)
ListBuffer(Zara, Nuha, Ayan, Welcome, To, Tutorialspoint)
Nuha

Scala Set adalah kumpulan elemen berbeda berpasangan dari jenis yang sama. Dengan kata lain, Set adalah kumpulan yang tidak berisi elemen duplikat. ListSet mengimplementasikan set yang tidak dapat diubah dan menggunakan struktur daftar. Urutan penyisipan elemen dipertahankan saat menyimpan elemen.

Mendeklarasikan Variabel ListSet

Berikut ini adalah sintaks untuk mendeklarasikan variabel ListSet.

Sintaksis

var z : ListSet[String] = ListSet("Zara","Nuha","Ayan")

Di sini, z dideklarasikan sebagai kumpulan daftar String yang memiliki tiga anggota. Nilai dapat ditambahkan dengan menggunakan perintah seperti berikut -

Perintah

var myList1: ListSet[String] = myList + "Naira";

Memproses ListSet

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

Contoh

import scala.collection.immutable.ListSet
object Demo {
   def main(args: Array[String]) = {
      var myList: ListSet[String] = ListSet("Zara","Nuha","Ayan");
      // Add an element
      var myList1: ListSet[String] = myList + "Naira";
      // Remove an element
      var myList2: ListSet[String] = myList - "Nuha";
      // Create empty set
      var myList3: ListSet[String] = ListSet.empty[String];
      println(myList);
      println(myList1);
      println(myList2);
      println(myList3);	  
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

ListSet(Zara, Nuha, Ayan)
ListSet(Zara, Nuha, Ayan, Naira)
ListSet(Zara, Ayan)
ListSet()

Scala Vector adalah struktur data yang tidak dapat diubah untuk tujuan umum di mana elemen dapat diakses secara acak. Biasanya digunakan untuk kumpulan data yang besar.

Mendeklarasikan Variabel Vektor

Berikut ini adalah sintaks untuk mendeklarasikan variabel Vektor.

Sintaksis

var z : Vector[String] = Vector("Zara","Nuha","Ayan")

Di sini, z dideklarasikan sebagai vektor String yang memiliki tiga anggota. Nilai dapat ditambahkan dengan menggunakan perintah seperti berikut -

Perintah

var vector1: Vector[String] = z + "Naira";

Memproses Vektor

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

Contoh

import scala.collection.immutable.Vector
object Demo {
   def main(args: Array[String]) = {
      var vector: Vector[String] = Vector("Zara","Nuha","Ayan");
      // Add an element
      var vector1: Vector[String] = vector :+ "Naira";
      // Reverse an element
      var vector2: Vector[String] = vector.reverse;
      // sort a vector
      var vector3: Vector[String] = vector1.sorted;
      println(vector);
      println(vector1);
      println(vector2);
      println(vector3);	  
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

Vector(Zara, Nuha, Ayan)
Vector(Zara, Nuha, Ayan, Naira)
Vector(Ayan, Nuha, Zara)
Vector(Ayan, Naira, Nuha, Zara)

Scala Set adalah kumpulan elemen berbeda berpasangan dari jenis yang sama. Dengan kata lain, Set adalah kumpulan yang tidak berisi elemen duplikat. Ada dua jenis Set, yaituimmutable dan mutable. Perbedaan antara objek yang dapat berubah dan objek yang tidak dapat diubah adalah bahwa ketika sebuah objek tidak dapat diubah, objek itu sendiri tidak dapat diubah.

Secara default, Scala menggunakan Set yang tidak dapat diubah. Jika Anda ingin menggunakan Set yang bisa berubah, Anda harus mengimporscala.collection.mutable.Setkelas secara eksplisit. Jika Anda ingin menggunakan kumpulan yang tidak dapat diubah dan yang tidak dapat diubah dalam koleksi yang sama, Anda dapat terus merujuk ke Set yang tidak dapat diubah sebagaiSet tapi Anda bisa merujuk ke Set yang bisa berubah sebagai mutable.Set.

Inilah cara Anda mendeklarasikan Set yang tidak dapat diubah -

Sintaksis

// Empty set of integer type
var s : Set[Int] = Set()
// Set of integer type
var s : Set[Int] = Set(1,3,5,7)

or 

var s = Set(1,3,5,7)

Saat menentukan himpunan kosong, anotasi tipe diperlukan karena sistem perlu menetapkan tipe konkret ke variabel.

Operasi Dasar di set

Semua operasi pada set dapat diekspresikan dalam tiga metode berikut -

Sr Tidak Metode & Deskripsi
1

head

Metode ini mengembalikan elemen pertama dari satu set.

2

tail

Metode ini mengembalikan satu set yang terdiri dari semua elemen kecuali yang pertama.

3

isEmpty

Metode ini mengembalikan nilai true jika set kosong jika tidak salah.

Coba contoh berikut yang menunjukkan penggunaan metode operasional dasar -

Contoh

object Demo {
   def main(args: Array[String]) {
      val fruit = Set("apples", "oranges", "pears")
      val nums: Set[Int] = Set()
      println( "Head of fruit : " + fruit.head )
      println( "Tail of fruit : " + fruit.tail )
      println( "Check if fruit is empty : " + fruit.isEmpty )
      println( "Check if nums is empty : " + nums.isEmpty )
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

Head of fruit : apples
Tail of fruit : Set(oranges, pears)
Check if fruit is empty : false
Check if nums is empty : true

Set Penggabungan

Anda bisa menggunakan keduanya ++ operator atau Set.++() metode untuk menggabungkan dua atau lebih set, tetapi sambil menambahkan set itu akan menghapus elemen duplikat.

Berikut adalah contoh untuk menggabungkan dua set.

Contoh

object Demo {
   def main(args: Array[String]) {
      val fruit1 = Set("apples", "oranges", "pears")
      val fruit2 = Set("mangoes", "banana")
      // use two or more sets with ++ as operator
      var fruit = fruit1 ++ fruit2
      println( "fruit1 ++ fruit2 : " + fruit )
      // use two sets with ++ as method
      fruit = fruit1.++(fruit2)
      println( "fruit1.++(fruit2) : " + fruit )
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

fruit1 ++ fruit2 : Set(banana, apples, mangoes, pears, oranges)
fruit1.++(fruit2) : Set(banana, apples, mangoes, pears, oranges)

Temukan Max, Min Elements dalam satu Set

Kamu dapat memakai Set.min metode untuk mengetahui minimum dan Set.maxmetode untuk mengetahui maksimal elemen yang tersedia dalam satu set. Berikut adalah contoh untuk menampilkan program tersebut.

Contoh

object Demo {
   def main(args: Array[String]) {
      val num = Set(5,6,9,20,30,45)
      // find min and max of the elements
      println( "Min element in Set(5,6,9,20,30,45) : " + num.min )
      println( "Max element in Set(5,6,9,20,30,45) : " + num.max )
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

Min element in Set(5,6,9,20,30,45) : 5
Max element in Set(5,6,9,20,30,45) : 45

Temukan Insets Common Values

Anda bisa menggunakan keduanya Set.& metode atau Set.intersectmetode untuk mengetahui nilai-nilai umum antara dua set. Coba contoh berikut untuk menunjukkan penggunaannya.

Contoh

object Demo {
   def main(args: Array[String]) {
      val num1 = Set(5,6,9,20,30,45)
      val num2 = Set(50,60,9,20,35,55)
      // find common elements between two sets
      println( "num1.&(num2) : " + num1.&(num2) )
      println( "num1.intersect(num2) : " + num1.intersect(num2) )
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

num1.&(num2) : Set(20, 9)
num1.intersect(num2) : Set(20, 9)

Bitset adalah kelas dasar umum untuk bitet yang bisa berubah dan tidak berubah. Bitsets adalah kumpulan bilangan bulat non-negatif dan direpresentasikan sebagai array berukuran variabel dari bit yang dikemas menjadi kata 64-bit. Jejak memori dari sebuah bitset diwakili oleh jumlah terbesar yang disimpan di dalamnya.

Mendeklarasikan Variabel BitSet

Berikut ini adalah sintaks untuk mendeklarasikan variabel BitSet.

Sintaksis

var z : BitSet = BitSet(0,1,2)

Di sini, z dideklarasikan sebagai kumpulan bit dari bilangan bulat non-negatif yang memiliki tiga anggota. Nilai dapat ditambahkan dengan menggunakan perintah seperti berikut -

Perintah

var myList1: BitSet = myList + 3;

Memproses BitSet

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

Contoh

import scala.collection.immutable.BitSet

object Demo {
   def main(args: Array[String]) = {
      var mySet: BitSet = BitSet(0, 1, 2);
      // Add an element
      var mySet1: BitSet = mySet + 3;
      // Remove an element
      var mySet2: BitSet = mySet - 2;
      var mySet3: BitSet = BitSet(4, 5);
      // Adding sets
      var mySet4: BitSet = mySet1 ++ mySet3;
      println(mySet);
      println(mySet1);
      println(mySet2);
      println(mySet4);	  
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

BitSet(0, 1, 2)
BitSet(0, 1, 2, 3)
BitSet(0, 1)
BitSet(0, 1, 2, 3, 4, 5)

Scala Set adalah kumpulan elemen berbeda berpasangan dari jenis yang sama. Dengan kata lain, Set adalah kumpulan yang tidak berisi elemen duplikat. HashSet mengimplementasikan set yang tidak dapat diubah dan menggunakan tabel hash. Urutan penyisipan elemen tidak dipertahankan.

Mendeklarasikan Variabel HashSet

Berikut ini adalah sintaks untuk mendeklarasikan variabel HashSet.

Sintaksis

var z : HashSet[String] = HashSet("Zara","Nuha","Ayan")

Di sini, z dinyatakan sebagai himpunan hash dari String yang memiliki tiga anggota. Nilai dapat ditambahkan dengan menggunakan perintah seperti berikut -

Perintah

var myList1: HashSet[String] = myList + "Naira";

Memproses HashSet

Di bawah ini adalah contoh program untuk menunjukkan cara membuat, menginisialisasi, dan memproses HashSet -

Contoh

import scala.collection.immutable.HashSet
object Demo {
   def main(args: Array[String]) = {
      var mySet: HashSet[String] = HashSet("Zara","Nuha","Ayan");
      // Add an element
      var mySet1: HashSet[String] = mySet + "Naira";
      // Remove an element
      var mySet2: HashSet[String] = mySet - "Nuha";
      // Create empty set
      var mySet3: HashSet[String] = HashSet.empty[String];
      println(mySet);
      println(mySet1);
      println(mySet2);
      println(mySet3);	  
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

HashSet(Zara, Nuha, Ayan)
HashSet(Zara, Nuha, Ayan, Naira)
HashSet(Zara, Ayan)
HashSet()

Scala Set adalah kumpulan elemen berbeda berpasangan dari jenis yang sama. Dengan kata lain, Set adalah kumpulan yang tidak berisi elemen duplikat. TreeSet mengimplementasikan set yang tidak dapat diubah dan menjaga elemen dalam urutan yang diurutkan.

Mendeklarasikan Variabel TreeSet

Berikut ini adalah sintaks untuk mendeklarasikan variabel TreeSet.

Sintaksis

var z : TreeSet[String] = TreeSet("Zara","Nuha","Ayan")

Di sini, z dideklarasikan sebagai kumpulan pohon dari String yang memiliki tiga anggota. Nilai dapat ditambahkan dengan menggunakan perintah seperti berikut -

Perintah

var myList1: TreeSet[String] = myList + "Naira";

Memproses TreeSet

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

Contoh

import scala.collection.immutable.TreeSet

object Demo {
   def main(args: Array[String]) = {
      var mySet: TreeSet[String] = TreeSet("Zara","Nuha","Ayan");
      // Add an element
      var mySet1: TreeSet[String] = mySet + "Naira";
      // Remove an element
      var mySet2: TreeSet[String] = mySet - "Nuha";
      // Create empty set
      var mySet3: TreeSet[String] = TreeSet.empty[String];
      println(mySet);
      println(mySet1);
      println(mySet2);
      println(mySet3);	  
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

TreeSet(Ayan, Nuha, Zara)
TreeSet(Ayan, Naira, Nuha, Zara)
TreeSet(Ayan, Zara)
TreeSet()

Peta skala adalah kumpulan pasangan kunci / nilai. Nilai apa pun dapat diambil berdasarkan kuncinya. Kunci di Map unik, tetapi nilainya tidak harus unik. Peta juga disebut tabel Hash. Ada dua jenis Maps, yaituimmutable dan mutable. Perbedaan antara objek yang dapat berubah dan objek yang tidak dapat diubah adalah bahwa ketika sebuah objek tidak dapat diubah, objek itu sendiri tidak dapat diubah.

Secara default, Scala menggunakan Peta yang tidak dapat diubah. Jika Anda ingin menggunakan Peta yang bisa berubah, Anda harus mengimporscala.collection.mutable.Mapkelas secara eksplisit. Jika Anda ingin menggunakan Peta yang tidak dapat diubah dan yang tidak dapat diubah secara bersamaan, Anda dapat terus merujuk ke Peta yang tidak dapat diubah sebagaiMap tapi Anda bisa merujuk ke set yang bisa berubah sebagai mutable.Map.

Berikut ini adalah contoh pernyataan untuk mendeklarasikan Maps yang tidak dapat diubah -

// Empty hash table whose keys are strings and values are integers:
var A:Map[Char,Int] = Map()

// A map with keys and values.
val colors = Map("red" -> "#FF0000", "azure" -> "#F0FFFF")

Saat menentukan peta kosong, anotasi tipe diperlukan karena sistem perlu menetapkan tipe konkret ke variabel. Jika kita ingin menambahkan pasangan nilai kunci ke Peta, kita dapat menggunakan operator + sebagai berikut.

A + = ('I' -> 1)
A + = ('J' -> 5)
A + = ('K' -> 10)
A + = ('L' -> 100)

Operasi Dasar di MAP

Semua operasi di peta dapat diekspresikan dalam tiga metode berikut.

Sr Tidak Metode & Deskripsi
1

keys

Metode ini mengembalikan iterable yang berisi setiap kunci di peta.

2

values

Metode ini mengembalikan iterable yang berisi setiap nilai di peta.

3

isEmpty

Metode ini mengembalikan nilai true jika peta kosong jika tidak salah.

Coba program contoh berikut yang menunjukkan penggunaan metode Peta.

Contoh

object Demo {
   def main(args: Array[String]) {
      val colors = Map(
         "red" -> "#FF0000", "azure" -> "#F0FFFF", "peru" -> "#CD853F"
      )
      val nums: Map[Int, Int] = Map()
      println( "Keys in colors : " + colors.keys )
      println( "Values in colors : " + colors.values )
      println( "Check if colors is empty : " + colors.isEmpty )
      println( "Check if nums is empty : " + nums.isEmpty )
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

Keys in colors : Set(red, azure, peru)
Values in colors : MapLike(#FF0000, #F0FFFF, #CD853F)
Check if colors is empty : false
Check if nums is empty : true

Peta Gabungan

Anda bisa menggunakan keduanya ++ operator atau Map.++() metode untuk menggabungkan dua atau lebih Maps, tetapi saat menambahkan Maps itu akan menghapus kunci duplikat.

Coba program contoh berikut untuk menggabungkan dua Peta.

Contoh

object Demo {
   def main(args: Array[String]) {
      val colors1 = Map(
         "red" -> "#FF0000", "azure" -> "#F0FFFF", "peru" -> "#CD853F"
      )
      val colors2 = Map(
         "blue" -> "#0033FF", "yellow" -> "#FFFF00", "red" -> "#FF0000"
      )
      // use two or more Maps with ++ as operator
      var colors = colors1 ++ colors2
      println( "colors1 ++ colors2 : " + colors )
      // use two maps with ++ as method
      colors = colors1.++(colors2)
      println( "colors1.++(colors2)) : " + colors )
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

colors1 ++ colors2 : Map(blue -> #0033FF, azure -> #F0FFFF, 
   peru -> #CD853F, yellow -> #FFFF00, red -> #FF0000)

colors1.++(colors2)) : Map(blue -> #0033FF, azure -> #F0FFFF, 
   peru -> #CD853F, yellow -> #FFFF00, red -> #FF0000)

Cetak Kunci dan Nilai dari Peta

Anda dapat melakukan iterasi melalui kunci dan nilai Peta menggunakan loop "foreach". Di sini, kami menggunakan metodeforeachterkait dengan iterator untuk berjalan melalui tombol. Berikut contoh programnya.

Contoh

object Demo {
   def main(args: Array[String]) {
      val colors = Map("red" -> "#FF0000", "azure" -> "#F0FFFF","peru" -> "#CD853F")

      colors.keys.foreach{
         i =>  
         print( "Key = " + i )
         println(" Value = " + colors(i) )
      }
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

Key = red Value = #FF0000
Key = azure Value = #F0FFFF
Key = peru Value = #CD853F

Periksa kunci di Peta

Anda bisa menggunakan keduanya Map.containsmetode untuk menguji apakah kunci tertentu ada di peta atau tidak. Coba program contoh berikut untuk pemeriksaan kunci.

Contoh

object Demo {
   def main(args: Array[String]) {
      val colors = Map(
         "red" -> "#FF0000", "azure" -> "#F0FFFF", "peru" -> "#CD853F"
      )
      if( colors.contains( "red" )) {
         println("Red key exists with value :"  + colors("red"))
      } else {
         println("Red key does not exist")
      }
      if( colors.contains( "maroon" )) {
         println("Maroon key exists with value :"  + colors("maroon"))
      } else {
         println("Maroon key does not exist")
      }
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

Red key exists with value :#FF0000
Maroon key does not exist

Peta skala adalah kumpulan pasangan kunci / nilai. Nilai apa pun dapat diambil berdasarkan kuncinya. Kunci di Map unik, tetapi nilainya tidak harus unik. HashMap mengimplementasikan peta yang tidak dapat diubah dan menggunakan tabel hash untuk mengimplementasikannya.

Mendeklarasikan Variabel HashMap

Berikut ini adalah sintaks untuk mendeklarasikan variabel HashMap.

Sintaksis

val colors = HashMap("red" -> "#FF0000", "azure" -> "#F0FFFF", "peru" -> "#CD853F")

Di sini, warna dideklarasikan sebagai hash-map dari Strings, Int yang memiliki tiga pasangan nilai kunci. Nilai dapat ditambahkan dengan menggunakan perintah seperti berikut -

Perintah

var myMap1: HashMap[Char, Int] = colors + ("black" -> "#000000");

Memproses HashMap

Di bawah ini adalah contoh program untuk menunjukkan cara membuat, menginisialisasi, dan memproses HashMap -

Contoh

import scala.collection.immutable.HashMap
object Demo {
   def main(args: Array[String]) = {
      var myMap: HashMap[String,String] = HashMap(
         "red" -> "#FF0000", "azure" -> "#F0FFFF", "peru" -> "#CD853F"
      );
      // Add an element
      var myMap1: HashMap[String,String] = myMap + ("white" -> "#FFFFFF");
      // Print key values
      myMap.keys.foreach{ 
         i =>  
         print( "Key = " + i )
         println(" Value = " + myMap(i) )
      }
      if( myMap.contains( "red" )) {
         println("Red key exists with value :"  + myMap("red"))
      } else {
         println("Red key does not exist")
      }
      if( myMap.contains( "maroon" )) {
         println("Maroon key exists with value :"  + myMap("maroon"))
      } else {
         println("Maroon key does not exist")
      }
      //removing element
      var myMap2: HashMap[String,String] = myMap - ("white");
      // Create empty map
      var myMap3: HashMap[String,String] = HashMap.empty[String, String];
      println(myMap1);
      println(myMap2);
      println(myMap3);		  
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

Key = azure Value = #F0FFFF
Key = peru Value = #CD853F
Key = red Value = #FF0000
Red key exists with value :#FF0000
Maroon key does not exist
HashMap(azure -> #F0FFFF, peru -> #CD853F, white -> #FFFFFF, red -> #FF0000)
HashMap(azure -> #F0FFFF, peru -> #CD853F, red -> #FF0000)
HashMap()

Peta skala adalah kumpulan pasangan kunci / nilai. Nilai apa pun dapat diambil berdasarkan kuncinya. Kunci di Map unik, tetapi nilainya tidak harus unik. ListMap mengimplementasikan peta yang tidak dapat diubah dan menggunakan daftar untuk mengimplementasikannya. Ini digunakan dengan sejumlah kecil elemen.

Mendeklarasikan Variabel ListMap

Berikut ini adalah sintaks untuk mendeklarasikan variabel ListMap.

Sintaksis

val colors = ListMap("red" -> "#FF0000", "azure" -> "#F0FFFF", "peru" -> "#CD853F")

Di sini, warna dideklarasikan sebagai hash-map dari Strings, Int yang memiliki tiga pasangan nilai kunci. Nilai dapat ditambahkan dengan menggunakan perintah seperti berikut -

Perintah

var myMap1: ListMap[Char, Int] = colors + ("black" -> "#000000");

Memproses ListMap

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

Contoh

import scala.collection.immutable.ListMap

object Demo {
   def main(args: Array[String]) = {
      var myMap: ListMap[String,String] = ListMap(
         "red" -> "#FF0000", "azure" -> "#F0FFFF", "peru" -> "#CD853F"
      );
      // Add an element
      var myMap1: ListMap[String,String] = myMap + ("white" -> "#FFFFFF");
      // Print key values
      myMap.keys.foreach{ 
         i =>  
         print( "Key = " + i )
         println(" Value = " + myMap(i) ) 
      }
      if( myMap.contains( "red" )) {
         println("Red key exists with value :"  + myMap("red"))
      } else {
         println("Red key does not exist")
      }
      if( myMap.contains( "maroon" )) {
         println("Maroon key exists with value :"  + myMap("maroon"))
      } else {
         println("Maroon key does not exist")
      }
      //removing element
      var myMap2: ListMap[String,String] = myMap - ("white");
      // Create empty map
      var myMap3: ListMap[String,String] = ListMap.empty[String, String];
      println(myMap1);
      println(myMap2);	
      println(myMap3);		  
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

Key = red Value = #FF0000
Key = azure Value = #F0FFFF
Key = peru Value = #CD853F
Red key exists with value :#FF0000
Maroon key does not exist
ListMap(red -> #FF0000, azure -> #F0FFFF, peru -> #CD853F, white -> #FFFFFF)
ListMap(red -> #FF0000, azure -> #F0FFFF, peru -> #CD853F)
ListMap()

Sebuah iterator bukanlah sebuah koleksi, melainkan sebuah cara untuk mengakses elemen dari sebuah koleksi satu per satu. Dua operasi dasar pada fileiterator it adalah next dan hasNext. Panggilan keit.next()akan mengembalikan elemen berikutnya dari iterator dan memajukan status iterator. Anda dapat mengetahui apakah ada lebih banyak elemen untuk dikembalikan menggunakan Iteratorit.hasNext metode.

Cara paling mudah untuk "melangkah melalui" semua elemen yang dikembalikan oleh iterator adalah dengan menggunakan loop sementara. Mari kita ikuti program contoh berikut.

Contoh

object Demo {
   def main(args: Array[String]) {
      val it = Iterator("a", "number", "of", "words")
      while (it.hasNext){
         println(it.next())
      }
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

a
number
of
words

Temukan Elemen Berharga Min & Maks

Kamu dapat memakai it.min dan it.maxmetode untuk mengetahui elemen bernilai minimum dan maksimum dari iterator. Di sini, kami menggunakanita dan itbuntuk melakukan dua operasi berbeda karena iterator hanya dapat dilintasi sekali. Berikut contoh programnya.

Contoh

object Demo {
   def main(args: Array[String]) {
      val ita = Iterator(20,40,2,50,69, 90)
      val itb = Iterator(20,40,2,50,69, 90)
      println("Maximum valued element " + ita.max )
      println("Minimum valued element " + itb.min )
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

Maximum valued element 90
Minimum valued element 2

Temukan Panjang Iterator

Anda bisa menggunakan keduanya it.size atau it.lengthmetode untuk mengetahui jumlah elemen yang tersedia di iterator. Di sini, kami menggunakan ita dan itb untuk melakukan dua operasi berbeda karena iterator hanya dapat dilintasi sekali. Berikut contoh programnya.

Contoh

object Demo {
   def main(args: Array[String]) {
      val ita = Iterator(20,40,2,50,69, 90)
      val itb = Iterator(20,40,2,50,69, 90)
      println("Value of ita.size : " + ita.size )
      println("Value of itb.length : " + itb.length )
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

Value of ita.size : 6
Value of itb.length : 6

Opsi Scala [T] adalah wadah untuk nol atau satu elemen dari tipe tertentu. Opsi [T] bisa berupa keduanyaSome[T] atau Noneobjek, yang mewakili nilai yang hilang. Misalnya, metode get dari Scala's Map menghasilkan Some (nilai) jika nilai yang sesuai dengan kunci tertentu telah ditemukan, atauNone jika kunci yang diberikan tidak ditentukan dalam Peta.

Jenis opsi sering digunakan dalam program Scala dan Anda dapat membandingkannya dengan nullnilai yang tersedia di Jawa yang tidak menunjukkan nilai. Misalnya, metode get java.util.HashMap mengembalikan nilai yang disimpan di HashMap, atau null jika tidak ada nilai yang ditemukan.

Katakanlah kita memiliki metode yang mengambil record dari database berdasarkan kunci utama.

def findPerson(key: Int): Option[Person]

Metode ini akan mengembalikan Some [Person] jika record ditemukan tetapi None jika record tidak ditemukan. Yuk kita ikuti program berikut ini.

Contoh

object Demo {
   def main(args: Array[String]) {
      val capitals = Map("France" -> "Paris", "Japan" -> "Tokyo")
      println("capitals.get( \"France\" ) : " +  capitals.get( "France" ))
      println("capitals.get( \"India\" ) : " +  capitals.get( "India" ))
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

capitals.get( "France" ) : Some(Paris)
capitals.get( "India" ) : None

Cara paling umum untuk memisahkan nilai opsional adalah melalui pencocokan pola. Misalnya coba program berikut.

Contoh

object Demo {
   def main(args: Array[String]) {
      val capitals = Map("France" -> "Paris", "Japan" -> "Tokyo")
      println("show(capitals.get( \"Japan\")) : " + show(capitals.get( "Japan")) )
      println("show(capitals.get( \"India\")) : " + show(capitals.get( "India")) )
   }
   def show(x: Option[String]) = x match {
      case Some(s) => s
      case None => "?"
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

show(capitals.get( "Japan")) : Tokyo
show(capitals.get( "India")) : ?

Menggunakan Metode getOrElse ()

Berikut adalah contoh program untuk menunjukkan bagaimana menggunakan metode getOrElse () untuk mengakses nilai atau default ketika tidak ada nilai.

Contoh

object Demo {
   def main(args: Array[String]) {
      val a:Option[Int] = Some(5)
      val b:Option[Int] = None 
      println("a.getOrElse(0): " + a.getOrElse(0) )
      println("b.getOrElse(10): " + b.getOrElse(10) )
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

a.getOrElse(0): 5
b.getOrElse(10): 10

Menggunakan Metode isEmpty ()

Berikut adalah contoh program untuk menunjukkan bagaimana menggunakan metode isEmpty () untuk memeriksa apakah opsinya adalah None atau tidak.

Contoh

object Demo {
   def main(args: Array[String]) {
      val a:Option[Int] = Some(5)
      val b:Option[Int] = None 
      println("a.isEmpty: " + a.isEmpty )
      println("b.isEmpty: " + b.isEmpty )
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Contoh

a.isEmpty: false
b.isEmpty: true

Queue is First In First Out, struktur data FIFO dan memungkinkan untuk memasukkan dan mengambil elemen dengan cara FIFO.

Mendeklarasikan Variabel Antrian

Berikut ini adalah sintaks untuk mendeklarasikan variabel Queue.

Sintaksis

val queue = Queue(1, 2, 3, 4, 5)

Di sini, antrian dideklarasikan sebagai Antrian angka. Nilai dapat ditambahkan di depan dengan menggunakan perintah seperti berikut -

Perintah

queue.enqueue(6)

Nilai dapat diambil di depan dengan menggunakan perintah seperti berikut -

Perintah

queue.dequeue()

Memproses Antrian

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

Contoh

import scala.collection.mutable.Queue
object Demo {
   def main(args: Array[String]) = {
      var queue = Queue(1, 2, 3, 4, 5);
      // Print queue elements
      queue.foreach{(element:Int) => print(element + " ")}
      println();
      // Print first element
      println("First Element: " + queue.front)
      // Add an element
      queue.enqueue(6);
      // Print queue elements
      queue.foreach{(element:Int) => print(element+ " ")}
      println();
      // Remove an element
      var dq = queue.dequeue;
      // Print dequeued element
      println("Dequeued Element: " + dq)
      // Print queue elements
      queue.foreach{(element:Int) => print(element+ " ")}
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

1 2 3 4 5
First Element: 1
1 2 3 4 5 6
Dequeued Element: 1
2 3 4 5 6

Scala tuple menggabungkan sejumlah item tetap bersama-sama sehingga dapat diedarkan secara keseluruhan. Tidak seperti larik atau daftar, tupel dapat menyimpan objek dengan tipe berbeda tetapi juga tidak dapat diubah.

Berikut ini adalah contoh tupel yang memegang integer, string, dan konsol.

val t = (1, "hello", Console)

Yang merupakan gula sintaksis (jalan pintas) untuk berikut ini -

val t = new Tuple3(1, "hello", Console)

Jenis sebenarnya dari sebuah tupel bergantung pada jumlah dan elemen yang dikandungnya dan jenis elemen tersebut. Jadi, tipe dari (99, "Luftballons") adalah Tuple2 [Int, String]. Tipe dari ('u', 'r', "the", 1, 4, "me") adalah Tuple6 [Char, Char, String, Int, Int, String]

Tuple adalah tipe Tuple1, Tuple2, Tuple3 dan seterusnya. Saat ini ada batas atas 22 di Scala jika Anda membutuhkan lebih banyak, maka Anda dapat menggunakan koleksi, bukan tupel. Untuk setiap jenis TupleN, di mana 1 <= N <= 22, Scala mendefinisikan sejumlah metode akses elemen. Diberikan definisi berikut -

val t = (4,3,2,1)

Untuk mengakses elemen tuple t, Anda dapat menggunakan metode t._1 untuk mengakses elemen pertama, t._2 untuk mengakses elemen kedua, dan seterusnya. Misalnya, ekspresi berikut menghitung jumlah semua elemen t.

val sum = t._1 + t._2 + t._3 + t._4

Anda bisa menggunakan Tuple untuk menulis metode yang mengambil List [Double] dan mengembalikan hitungan, jumlah, dan jumlah kuadrat yang dikembalikan dalam Tupel tiga elemen, Tuple3 [Int, Double, Double]. Mereka juga berguna untuk meneruskan daftar nilai data sebagai pesan antara aktor dalam pemrograman bersamaan.

Coba program contoh berikut. Ini menunjukkan bagaimana menggunakan tupel.

Contoh

object Demo {
   def main(args: Array[String]) {
      val t = (4,3,2,1)
      val sum = t._1 + t._2 + t._3 + t._4
      println( "Sum of elements: "  + sum )
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

Sum of elements: 10

Iterasi di atas Tuple

Kamu dapat memakai Tuple.productIterator() metode untuk mengulangi semua elemen Tuple.

Coba program contoh berikut untuk mengulangi tupel.

Contoh

object Demo {
   def main(args: Array[String]) {
      val t = (4,3,2,1)
      t.productIterator.foreach{ i =>println("Value = " + i )}
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

Value = 4
Value = 3
Value = 2
Value = 1

Mengonversi ke String

Kamu dapat memakai Tuple.toString()metode untuk menggabungkan semua elemen tupel menjadi string. Coba program contoh berikut untuk mengubahnya menjadi String.

Contoh

object Demo {
   def main(args: Array[String]) {
      val t = new Tuple3(1, "hello", Console)
      println("Concatenated String: " + t.toString() )
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

Concatenated String: (1,hello,scala.Console$@281acd47)

Tukar Elemen

Kamu dapat memakai Tuple.swap metode untuk menukar elemen Tuple2.

Coba program contoh berikut untuk menukar elemen.

Contoh

object Demo {
   def main(args: Array[String]) {
      val t = new Tuple2("Scala", "hello")
      println("Swapped Tuple: " + t.swap )
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

Swapped tuple: (hello,Scala)

Scala Seq adalah sifat untuk mewakili urutan yang tidak berubah. Struktur ini menyediakan akses berbasis indeks dan berbagai metode utilitas untuk menemukan elemen, kemunculannya, dan selanjutnya. A Seq mempertahankan urutan penyisipan.

Mendeklarasikan Variabel Seq

Berikut ini adalah sintaks untuk mendeklarasikan variabel Seq.

Sintaksis

val seq: Seq[Int] = Seq(1, 2, 3, 4, 5)

Di sini, sekuens dideklarasikan sebagai deret bilangan. Seq menyediakan perintah seperti berikut -

Perintah

val isPresent = seq.contains(4);
val contains = seq.endsWith(Seq(4,5));
var lastIndexOf = seq.lasIndexOf(5);

Urutan Pemrosesan

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

Contoh

import scala.collection.immutable.Seq
object Demo {
   def main(args: Array[String]) = {
      var seq = Seq(1, 2, 3, 4, 5, 3)
      // Print seq elements
      seq.foreach{(element:Int) => print(element + " ")}
      println()
      println("Seq ends with (5,3): " + seq.endsWith(Seq(5, 3)))
      println("Seq contains 4: " + seq.contains(4))
      println("Last index of 3: " + seq.lastIndexOf(3))
      println("Reversed Seq" + seq.reverse)           
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

1 2 3 4 5 3
Seq ends with (5,3): true
Seq contains 4: true
Last index of 3: 5
Reversed SeqList(3, 5, 4, 3, 2, 1)

Stack is Last In First Out, LIFO struktur data dan memungkinkan untuk memasukkan dan mengambil elemen di atas, dengan cara LIFO.

Mendeklarasikan Variabel Stack

Berikut ini adalah sintaks untuk mendeklarasikan variabel Stack.

Sintaksis

val stack = Stack(1, 2, 3, 4, 5)

Di sini, tumpukan dideklarasikan sebagai Tumpukan angka. Nilai dapat ditambahkan di atas dengan menggunakan perintah seperti berikut -

Perintah

stack.push(6)

Nilai dapat diambil dari atas dengan menggunakan perintah seperti berikut -

Perintah

stack.top

Nilai dapat dihapus dari atas dengan menggunakan perintah seperti berikut -

Perintah

stack.pop

Memproses Stack

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

Contoh

import scala.collection.mutable.Stack
object Demo {
   def main(args: Array[String]) = {
      var stack: Stack[Int] = Stack();
      // Add elements
      stack.push(1);
      stack.push(2);
      // Print element at top
      println("Top Element: " + stack.top)
      // Print element
      println("Removed Element: " + stack.pop())
      // Print element
      println("Top Element: " + stack.top)	
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

Top Element: 2
Removed Element: 2
Top Element: 1

Scala Stream adalah daftar khusus dengan fitur evaluasi malas. Dalam aliran skala, elemen dievaluasi hanya saat dibutuhkan. Stream mendukung komputasi lambat dan memahami performa.

Mendeklarasikan Variabel Aliran

Berikut ini adalah sintaks untuk mendeklarasikan variabel Stream.

Sintaksis

val stream = 1 #:: 2 #:: 3 #:: Stream.empty

Di sini, aliran dideklarasikan sebagai aliran angka. Di sini 1 adalah head of stream, 2, 3 adalah tail of stream. Stream.empty menandai akhir dari aliran. Nilai dapat diambil menggunakan perintah take seperti berikut -

Perintah

stream.take(2)

Memproses Streaming

Di bawah ini adalah contoh program untuk menunjukkan cara membuat, menginisialisasi, dan memproses Stream -

Contoh

import scala.collection.immutable.Stream
object Demo {
   def main(args: Array[String]) = {
      val stream = 1 #:: 2 #:: 3 #:: Stream.empty
      // print stream
      println(stream)
      // Print first two elements	
      stream.take(2).print
      println()
      // Create an empty stream
      val stream1: Stream[Int] = Stream.empty[Int]
      // Print element
      println(s"Stream: $stream1")
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

Stream(1, <not computed>)
1, 2
Stream: Stream()

drop () metode adalah metode yang digunakan oleh List untuk memilih semua elemen kecuali n elemen pertama dari daftar.

Sintaksis

Berikut ini adalah sintaks dari metode drop.

def drop(n: Int): List[A]

Di sini, n adalah jumlah elemen yang akan dihapus dari daftar. Metode ini mengembalikan semua elemen daftar kecuali yang pertama n.

Pemakaian

Di bawah ini adalah contoh program untuk menunjukkan bagaimana menggunakan metode drop -

Contoh

object Demo {
   def main(args: Array[String]) = {
      val list = List(1, 2, 3, 4, 5)
      // print list
      println(list)
      //apply operation
      val result = list.drop(3)
      //print result
      println(result)      
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

List(1, 2, 3, 4, 5)
List(4, 5)

dropWhile () metode adalah metode yang digunakan oleh List untuk menghapus semua elemen yang memenuhi kondisi tertentu.

Sintaksis

Berikut ini adalah sintaks dari metode dropWhile.

def dropWhile(p: (A) => Boolean): List[A]

Di sini, p: (A) => Boolean adalah predikat atau kondisi yang akan diterapkan pada setiap elemen list. Metode ini mengembalikan semua elemen daftar kecuali yang dijatuhkan.

Pemakaian

Di bawah ini adalah contoh program untuk menunjukkan bagaimana menggunakan metode dropWhile -

Contoh

object Demo {
   def main(args: Array[String]) = {
      val list = List(3, 6, 9, 4, 2)
      // print list
      println(list)
      //apply operation
      val result = list.dropWhile(x=>{x % 3 == 0})
      //print result
      println(result)      
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

List(3, 6, 9, 4, 2)
List(4, 2)

filter () metode adalah metode yang digunakan oleh List untuk memilih semua elemen yang memenuhi predikat yang diberikan.

Sintaksis

Berikut ini adalah sintaks dari metode filter.

def filter(p: (A) => Boolean): List[A]

Di sini, p: (A) => Boolean adalah predikat atau kondisi yang akan diterapkan pada setiap elemen list. Metode ini mengembalikan semua elemen daftar yang memenuhi kondisi yang diberikan.

Pemakaian

Di bawah ini adalah contoh program untuk menunjukkan bagaimana menggunakan metode filter -

Contoh

object Demo {
   def main(args: Array[String]) = {
      val list = List(3, 6, 9, 4, 2)
      // print list
      println(list)
      //apply operation
      val result = list.filter(x=>{x % 3 == 0})
      //print result
      println(result)      
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

List(3, 6, 9, 4, 2)
List(3, 6, 9)

Metode find () adalah metode yang digunakan oleh Iterator untuk menemukan elemen yang memenuhi predikat yang diberikan.

Sintaksis

Berikut ini adalah sintaks dari metode find.

def find(p: (A) => Boolean): Option[A]

Di sini, p: (A) => Boolean adalah predikat atau kondisi yang akan diterapkan pada setiap elemen iterator. Metode ini mengembalikan elemen Option yang berisi elemen iterator yang cocok yang memenuhi kondisi yang diberikan.

Pemakaian

Di bawah ini adalah contoh program untuk menunjukkan bagaimana menggunakan metode find -

Contoh

object Demo {
   def main(args: Array[String]) = {
      val iterator = Iterator(3, 6, 9, 4, 2)
      //apply operation
      val result = iterator.find(x=>{x % 3 == 0})
      //print result
      println(result)      
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

Some(3)

Metode flatMap () adalah metode dari sifat TraversableLike, ia mengambil sebuah predikat, menerapkannya ke setiap elemen koleksi dan mengembalikan koleksi elemen baru yang dikembalikan oleh predikat tersebut.

Sintaksis

Berikut ini adalah sintaks metode flatMap.

def flatMap[B](f: (A) ? GenTraversableOnce[B]): TraversableOnce[B]

Di sini, f: (A)? GenTraversableOnce [B] adalah predikat atau kondisi yang akan diterapkan pada setiap elemen koleksi. Metode ini mengembalikan elemen Option yang berisi elemen iterator yang cocok yang memenuhi kondisi yang diberikan.

Pemakaian

Di bawah ini adalah contoh program untuk menunjukkan bagaimana menggunakan metode flatMap -

Contoh

object Demo {
   def main(args: Array[String]) = {
      val list = List(1, 5, 10)
      //apply operation
      val result = list.flatMap{x => List(x,x+1)}
      //print result
      println(result)      
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

List(1, 2, 5, 6, 10, 11)

flatten () metode adalah sifat anggota GenericTraversableTemplate, mengembalikan satu koleksi elemen dengan menggabungkan koleksi anak.

Sintaksis

Berikut ini adalah sintaks metode flatten.

def flatten[B]: Traversable[B]

Di sini, f: (A)? GenTraversableOnce [B] adalah predikat atau kondisi yang akan diterapkan pada setiap elemen koleksi. Metode ini mengembalikan elemen Option yang berisi elemen iterator yang cocok yang memenuhi kondisi yang diberikan.

Pemakaian

Di bawah ini adalah contoh program untuk menunjukkan bagaimana menggunakan metode flatten -

Contoh

object Demo {
   def main(args: Array[String]) = {
      val list = List(List(1,2), List(3,4))
      //apply operation
      val result = list.flatten
      //print result
      println(result)      
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

List(1, 2, 3, 4)

metode fold () adalah anggota dari sifat TraversableOnce, digunakan untuk menciutkan elemen koleksi.

Sintaksis

Berikut ini adalah sintaks metode lipat.

def fold[A1 >: A](z: A1)(op: (A1, A1) ? A1): A1

Di sini, metode lipat mengambil fungsi operator biner asosiatif sebagai parameter. Metode ini mengembalikan hasil sebagai nilai. Ini menganggap masukan pertama sebagai nilai awal dan masukan kedua sebagai fungsi (yang mengambil nilai akumulasi dan item saat ini sebagai masukan).

Pemakaian

Di bawah ini adalah contoh program untuk menunjukkan bagaimana menggunakan metode lipat -

Contoh

object Demo {
   def main(args: Array[String]) = {
      val list = List(1, 2, 3 ,4)
      //apply operation to get sum of all elements of the list
      val result = list.fold(0)(_ + _)
      //print result
      println(result)      
   }
}

Di sini kita telah melewati 0 sebagai nilai awal ke fungsi lipat dan kemudian semua nilai ditambahkan. Simpan program di atas dalamDemo.scala. Perintah berikut digunakan untuk mengkompilasi dan menjalankan program ini.

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

10

foldLeft () metode adalah anggota dari sifat TraversableOnce, digunakan untuk menciutkan elemen koleksi. Ini menavigasi elemen dari urutan Kiri ke Kanan. Ini terutama digunakan dalam fungsi rekursif dan mencegah pengecualian stack overflow.

Sintaksis

Berikut ini adalah sintaks metode lipat.

def foldLeft[B](z: B)(op: (B, A) ? B): B

Di sini, metode foldLeft menggunakan fungsi operator biner asosiatif sebagai parameter. Metode ini mengembalikan hasil sebagai nilai.

Pemakaian

Di bawah ini adalah contoh program untuk menunjukkan bagaimana menggunakan metode foldLeft -

Contoh

object Demo {
   def main(args: Array[String]) = {
      val list = List(1, 2, 3 ,4)
      //apply operation to get sum of all elements of the list
      val result = list.foldLeft(0)(_ + _)
      //print result
      println(result)      
   }
}

Di sini kita telah melewati 0 sebagai nilai awal ke fungsi lipat dan kemudian semua nilai ditambahkan. Simpan program di atas dalamDemo.scala. Perintah berikut digunakan untuk mengkompilasi dan menjalankan program ini.

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

10

Metode foldRight () adalah anggota dari sifat TraversableOnce, yang digunakan untuk menciutkan elemen koleksi. Ini menavigasi elemen dari urutan Kanan ke Kiri.

Sintaksis

Berikut ini adalah sintaks metode foldRight.

def foldRight[B](z: B)(op: (B, A) ? B): B

Di sini, metode lipat mengambil fungsi operator biner asosiatif sebagai parameter. Metode ini mengembalikan nilai yang dihasilkan.

Pemakaian

Di bawah ini adalah contoh program untuk menunjukkan bagaimana menggunakan metode foldRight -

Contoh

object Demo {
   def main(args: Array[String]) = {
      val list = List(1, 2, 3 ,4)
      //apply operation to get sum of all elements of the list
      val result = list.foldRight(0)(_ + _)
      //print result
      println(result)      
   }
}

Di sini kita telah meneruskan 0 sebagai nilai awal ke fungsi foldRight dan kemudian semua nilai ditambahkan. Simpan program di atas dalamDemo.scala. Perintah berikut digunakan untuk mengkompilasi dan menjalankan program ini.

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

10

map () metode adalah anggota dari sifat TraversableLike, digunakan untuk menjalankan metode predikat pada setiap elemen koleksi. Ini mengembalikan koleksi baru.

Sintaksis

Berikut ini adalah sintaks dari metode peta.

def map[B](f: (A) ? B): Traversable[B]

Di sini, metode map mengambil fungsi prediate sebagai parameter. Metode ini mengembalikan koleksi yang diperbarui.

Pemakaian

Di bawah ini adalah contoh program untuk menunjukkan bagaimana menggunakan metode peta -

Contoh

object Demo {
   def main(args: Array[String]) = {
      val list = List(1, 2, 3 ,4)
      //apply operation to get twice of each element.
      val result = list.map(_ * 2)
      //print result
      println(result)      
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

List(2, 4, 6, 8)

partisi () metode adalah anggota dari sifat TraversableLike, digunakan untuk menjalankan metode predikat pada setiap elemen koleksi. Ia mengembalikan dua koleksi, satu koleksi adalah elemen yang memenuhi fungsi predikat yang diberikan dan koleksi lainnya adalah elemen yang tidak memenuhi fungsi predikat yang diberikan.

Sintaksis

Berikut ini adalah sintaks dari metode peta.

def partition(p: (A) ? Boolean): (Repr, Repr)

Di sini, metode partisi mengambil fungsi prediate sebagai parameter. Metode ini mengembalikan koleksi.

Pemakaian

Di bawah ini adalah contoh program yang menunjukkan bagaimana menggunakan metode partisi -

Contoh

object Demo {
   def main(args: Array[String]) = {
      val list = List(1, 2, 3, 4, 5, 6, 7)
      //apply operation to get twice of each element.
      val (result1, result2) = list.partition(x=>{x % 3 == 0})
      //print result
      println(result1)
      println(result2)      
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

List(3, 6)
List(1, 2, 4, 5, 7)

Mengurangi () metode adalah anggota dari sifat TraversableOnce, digunakan untuk menciutkan elemen dari koleksi. Ini mirip dengan metode lipat tetapi tidak mengambil nilai awal.

Sintaksis

Berikut ini adalah sintaks dari metode pengurangan.

def reduce[A1 >: A](op: (A1, A1) ? A1): A1

Di sini, metode reduce mengambil fungsi operator biner asosiatif sebagai parameter. Metode ini mengembalikan nilai yang dihasilkan.

Pemakaian

Di bawah ini adalah contoh program untuk menunjukkan bagaimana menggunakan metode lipat -

Contoh

object Demo {
   def main(args: Array[String]) = {
      val list = List(1, 2, 3 ,4)
      //apply operation to get sum of all elements of the list
      val result = list.reduce(_ + _)
      //print result
      println(result)      
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

10

scan () metode adalah anggota dari sifat TraversableLike, ini mirip dengan metode lipat tetapi digunakan untuk menerapkan operasi pada setiap elemen koleksi dan mengembalikan koleksi.

Sintaksis

Berikut ini adalah sintaks metode lipat.

def scan[B >: A, That](z: B)(op: (B, B) ? B)(implicit cbf: CanBuildFrom[Repr, B, That]): That

Di sini, metode scan mengambil fungsi operator biner asosiatif sebagai parameter. Metode ini mengembalikan koleksi yang diperbarui sebagai hasil. Ini menganggap masukan pertama sebagai nilai awal dan masukan kedua sebagai fungsi.

Pemakaian

Di bawah ini adalah contoh program untuk menunjukkan bagaimana menggunakan metode pemindaian -

Contoh

object Demo {
   def main(args: Array[String]) = {
      val list = List(1, 2, 3 ,4)
      //apply operation to create a running total of all elements of the list
      val list1 = list.scan(0)(_ + _)
      //print list
      println(list1)      
   }
}

Di sini kita telah melewati 0 sebagai nilai awal untuk memindai fungsi dan kemudian semua nilai ditambahkan. Simpan program di atas dalamDemo.scala. Perintah berikut digunakan untuk mengkompilasi dan menjalankan program ini.

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

List(0, 1, 3, 6, 10)

zip () metode adalah anggota dari sifat IterableLike, digunakan untuk menggabungkan koleksi ke koleksi saat ini dan hasilnya adalah kumpulan pasangan elemen tupel dari kedua koleksi.

Sintaksis

Berikut ini adalah sintaks metode zip.

def zip[B](that: GenIterable[B]): Iterable[(A, B)]

Di sini, metode zip mengambil koleksi sebagai parameter. Metode ini mengembalikan koleksi pasangan yang diperbarui sebagai hasil.

Pemakaian

Di bawah ini adalah contoh program untuk menunjukkan bagaimana menggunakan metode zip -

Contoh

object Demo {
   def main(args: Array[String]) = {
      val list = List(1, 2, 3 ,4)
      val list1 = List("A", "B", "C", "D")
      //apply operation to create a zip of list
      val list2 = list zip list1
      //print list
      println(list2)      
   }
}

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

Perintah

\>scalac Demo.scala
\>scala Demo

Keluaran

List((1,A), (2,B), (3,C), (4,D))