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