Kursus
Anda mungkin juga tertarik membaca tutorial berikut:
Pendahuluan
Struktur singly linked list yang mengimplementasikan list dengan 3 elemen bilangan bulat (Sumber: Wikipedia - List (tipe data abstrak)).
Secara umum, list adalah urutan tipe data abstrak yang merepresentasikan sejumlah nilai tetap. Nilai dapat dimanipulasi secara terprogram oleh sebuah program dan juga dapat muncul lebih dari sekali dalam sebuah list. Contoh instance dari list ditunjukkan pada gambar di atas sebagai singly linked list yang terdiri dari tiga nilai integer. List juga dianggap sebagai struktur data, dan salah satu contoh list sebagai struktur data adalah linked list.
Banyak bahasa pemrograman mendukung list, dan salah satu contoh di mana orang menggunakan list secara ekstensif adalah Python. Sebuah list sering kali dapat dibentuk dengan menulis item-item dalam suatu urutan, dipisahkan dengan koma, titik koma, atau spasi, di dalam sepasang pembatas seperti tanda kurung (), tanda kurung siku [], kurung kurawal {}, atau tanda kurung sudut <>. Beberapa bahasa seperti Python mungkin memungkinkan tipe list untuk diindeks atau diiris seperti tipe array, yang dalam hal tersebut tipe datanya lebih akurat digambarkan sebagai array (Sumber: Wikipedia - List (tipe data abstrak)).
Khusus Scala, list adalah koleksi yang berisi data immutable, yang berarti setelah list dibuat, maka list tersebut tidak dapat diubah. Di Scala, list merepresentasikan linked list.
Dalam list Scala, setiap elemen tidak harus memiliki tipe data yang sama. Implementasi list Scala menggunakan state yang mutable secara internal selama fase konstruksi. Di Scala, list didefinisikan di bawah paket scala.collection.immutable dan karenanya bersifat immutable. Terakhir, Scala List memiliki berbagai metode seperti add, prepend, max, min, dan lain-lain.
Sintaks untuk mendefinisikan Scala List
val variable_name: List[type] = List(item1, item2, item3) atau val variable_name = List(item1, item2, item3) Sebuah list di Scala sebagian besar mirip dengan array Scala. Namun, Scala List bersifat immutable dan merepresentasikan struktur data linked list. Di sisi lain, array Scala bersifat datar dan mutable.
Mari cepat pahami perbedaan di atas dengan bantuan contoh.
Scala List vs. Scala Array
Pertama-tama mari mendefinisikan sebuah array di Scala.
Lalu Anda akan memodifikasi nilai pada indeks ke-1 karena array Scala menggunakan indeks mulai dari nol dan lihat apakah Anda bisa memperbaruinya.

Jadi, seperti yang terlihat dari cuplikan kode di atas, array Scala memang memungkinkan Anda memodifikasi nilai pada indeks ke-1.
Sekarang, Anda akan mendefinisikan sebuah Scala List dan mencoba meniru hal yang sama seperti di atas.

Nah, dari contoh di atas, Anda dapat menyimpulkan bahwa karena Scala List bersifat immutable, pembaruan nilai menghasilkan error.
Metode pada Scala List
-
head: Metode ini mengembalikan elemen pertama dari Scala List.
-
tail: Metode ini mengembalikan semua elemen kecuali yang pertama.
-
isEmpty: Metode ini memeriksa apakah list kosong; jika ya, mengembalikan True, jika tidak, False.
-
fill(): Metode ini membuat list seragam yang terdiri atas nol atau lebih salinan dari elemen yang ditentukan.
-
reverse: Metode ini membalik urutan elemen list.
-
$:::$ atau $.:::$ atau .concat(): Menggabungkan dua atau lebih list.
-
tabulate(): Metode ini dapat membuat list secara terstruktur. Semangatnya mirip dengan metode
fill(), tetapi berbeda denganfill(), metode ini menerima dua argumen. Argumen pertama menentukan dimensi list yang akan dibuat, sementara argumen kedua mendeskripsikan elemen-elemen list yang dihitung dari sebuah fungsi.
Jangan khawatir jika beberapa metode di atas belum begitu jelas bagi Anda, karena Anda akan mengimplementasikannya di Scala dengan bantuan contoh. Namun sebelum itu, mari pelajari cara mendefinisikan Scala List.
Anda akan membuat Scala List dengan tipe data string, integer (baik 1D & 2D). Anda juga akan belajar membuat list yang terdiri dari string dan integer sekaligus.
List Integer 1-D

List 1-D dengan Integer dan String

List String 1-D

List 2-D

Operasi Aritmetika pada List
Pada contoh ini, Anda akan menggunakan list alih-alih hanya mendefinisikan variabel. Tidak seperti variabel, sebuah List dapat menampung sejumlah nilai n; Anda akan melakukan operasi aritmetika pada dua list alih-alih dua variabel.
Jadi, mari cepat pelajari bagaimana hal itu dilakukan.
Untuk menerapkan operasi aritmetika, Anda akan menggunakan fungsi zipped.map yang akan diikuti oleh list x dan y. Kemudian Anda akan menentukan di dalam metode zipped.map operasi yang ingin dilakukan sebagai argumen.


Terakhir, mari tulis kode yang akan memuat semua metode ini.
object Scala_List_Methods
{
def main(args: Array[String])
{
// define two lists
val x = List(1, 40, 10)
val y = List(20, 25, 30)
val z = List("DataCamp", "Tutorials", "Are", "The", "Best")
//Head
println();
println("Head of list x, y, z = " + (x.head, y.head, z.head));
println();
//Tail
println("Tail of list x, y, z = " + (x.tail, y.tail, z.tail));
println();
//isEmpty
println("Is list x, y, z empty? = " + (x.isEmpty, y.isEmpty, z.isEmpty));
println();
//Concatenate
println("Concatenating x, y, z lists with the first method = " + (x:::y:::z));
println("Concatenating x, y, z lists with the second method = " + ((x).:::(y).:::(z)));
println("Concatenating x, y, z lists with the third method = " + (List.concat(x,y,z)));
println();
//Reverse
println("Reverse of x, y, z is = " + (x.reverse, y.reverse, z.reverse));
println();
//Fill
println("Output of Fill method is = " + (List.fill(5)(z)));
println();
//Tabulate
println("Output of Tabulate method is = " + (List.tabulate(5)(x => x * x * x)));
}
}

Kesimpulan
Selamat telah menyelesaikan tutorial Scala ini.
Silakan ajukan pertanyaan terkait tutorial ini di kolom komentar di bawah.
