Scala Koleksiyonları - Hızlı Kılavuz
Scala, zengin bir koleksiyon kitaplığına sahiptir. Koleksiyonlar, nesnelerin kapsayıcılarıdır. Bu kaplar sıralı olabilir, Liste, Tuple, Seçenek, Harita, vb. Gibi öğelerin doğrusal kümeleri olabilir. Koleksiyonlar, rastgele sayıda öğeye sahip olabilir veya sıfır veya bir öğeye (örn., Seçenek) sınırlandırılabilir.
Koleksiyonlar olabilir strict veya lazy. Tembel koleksiyonlar, erişilene kadar hafızayı tüketmeyecek öğelere sahiptir.Ranges. Ek olarak koleksiyonlar olabilirmutable (referansın içeriği değişebilir) veya immutable(bir referansın ifade ettiği şey asla değişmez). Değişmez koleksiyonların değiştirilebilir öğeler içerebileceğini unutmayın.
Bazı problemler için değiştirilebilir koleksiyonlar daha iyi çalışır ve diğerleri için değişmez koleksiyonlar daha iyi çalışır. Şüpheye düştüğünüzde, değişmez bir koleksiyonla başlamak ve değiştirilebilir olanlara ihtiyacınız varsa daha sonra değiştirmek daha iyidir.
Bu bölüm, en sık kullanılan koleksiyon türlerine ve bu koleksiyonlar üzerinde en sık kullanılan işlemlere ışık tutmaktadır.
Sr.No | Açıklamalı Koleksiyonlar |
---|---|
1 | Scala Lists Scala Listesi [T], T türünün bağlantılı bir listesidir. |
2 | Scala Sets Bir küme, aynı türden ikili farklı elemanların bir koleksiyonudur. |
3 | Scala Maps Harita, anahtar / değer çiftlerinden oluşan bir koleksiyondur. Herhangi bir değer, anahtarına bağlı olarak alınabilir. |
4 | Scala Tuples Bir dizi veya listeden farklı olarak, bir demet farklı türlerdeki nesneleri tutabilir. |
5 | Scala Options Seçenek [T], sıfır veya belirli bir türden bir eleman için bir kap sağlar. |
6 | Scala Iterators Yineleyici bir koleksiyon değil, daha çok bir koleksiyonun öğelerine tek tek erişmenin bir yoludur. |
Scala, herhangi bir UNIX aromalı veya Windows tabanlı sisteme kurulabilir. Scala'yı makinenize kurmaya başlamadan önce, bilgisayarınızda Java 1.8 veya üstünün kurulu olması gerekir.
Scala'yı kurmak için aşağıda verilen adımları izleyin.
1. Adım: Java Kurulumunuzu Doğrulayın
Öncelikle sisteminizde Java Yazılım Geliştirme Kiti (SDK) kurulu olması gerekir. Bunu doğrulamak için üzerinde çalıştığınız platforma bağlı olarak aşağıdaki iki komuttan herhangi birini uygulayın.
Java yüklemesi düzgün bir şekilde yapıldıysa, Java yüklemenizin mevcut sürümünü ve teknik özelliklerini gösterecektir. Aşağıdaki tabloda örnek bir çıktı verilmiştir.
Platform | Komut | Örnek Çıktı |
---|---|---|
pencereler | Komut Konsolunu açın ve şunu yazın - \>java -version |
Java sürümü "1.8.0_31" Java (TM) SE Çalışma Süresi Çevre (derleme 1.8.0_31-b31) Java Hotspot (TM) 64-bit Sunucusu VM (25.31-b07 derlemesi, karma mod) |
Linux | Komut terminalini açın ve şunu yazın - $java -version |
Java sürümü "1.8.0_31" JDK Çalışma Zamanı Ortamını açın (rhel-2.8.10.4.el6_4-x86_64) JDK 64-Bit Sunucu VM'yi açın (25.31-b07 derleme, karma mod) |
Bu öğreticinin okuyucularının sistemlerinde Java SDK sürüm 1.8.0_31 yüklü olduğunu varsayıyoruz.
Java SDK'nız yoksa, mevcut sürümünü şuradan indirin: https://www.oracle.com/technetwork/java/javase/downloads/index.html ve kurun.
Adım 2: Java Ortamınızı Ayarlayın
JAVA_HOME ortam değişkenini, Java'nın makinenizde kurulu olduğu temel dizin konumunu gösterecek şekilde ayarlayın. Örneğin,
Sr.No | Platform ve Açıklama |
---|---|
1 | Windows JAVA_HOME'u C: \ ProgramFiles \ java \ jdk1.8.0_31 olarak ayarlayın |
2 | Linux JAVA_HOME = / usr / local / java-current dosyasını dışa aktar |
Java derleyici konumunun tam yolunu Sistem Yoluna ekleyin.
Sr.No | Platform ve Açıklama |
---|---|
1 | Windows PATH sistem değişkeninin sonuna "C: \ Program Files \ Java \ jdk1.8.0_31 \ bin" Dizesini ekleyin. |
2 | Linux Export PATH = $ PATH: $ JAVA_HOME / bin / |
Komutu yürütün java -version yukarıda açıklandığı gibi komut isteminden.
3. Adım: Scala'yı yükleyin
Scala'yı www.scala-lang.org/downloads adresinden indirebilirsiniz . Bu öğreticiyi yazarken, 'scala-2.13.1-installer.jar'ı indirdim. Devam etmek için yönetici ayrıcalığına sahip olduğunuzdan emin olun. Şimdi, komut isteminde aşağıdaki komutu yürütün -
Platform | Komut ve Çıktı | Açıklama |
---|---|---|
pencereler | \> java -jar scala-2.13.1-installer.jar \> |
Bu komut, Windows makinenize Scala'yı kurmanız için size rehberlik edecek bir kurulum sihirbazı gösterecektir. Kurulum sırasında lisans sözleşmesi isteyecek, sadece kabul edecek ve ayrıca Scala'nın kurulacağı yolu soracaktır. Varsayılan olarak verilen "C: \ Program Files \ Scala" yolunu seçtim , rahatınıza göre uygun bir yol seçebilirsiniz. |
Linux | Command - $ java -jar scala-2.13.1-installer.jar Output - Scala 2.13.1 kurulumuna hoş geldiniz! Ana sayfa - http://Scala-lang.org/ devam etmek için 1'e, çıkmak için 2'ye, yeniden görüntülemek için 3'e basın 1 ................................................ [Paketi açmaya başlıyorum] [İşleme paketi: Yazılım Paketi Kurulumu (1/1)] [Paketin açılması bitti] [Konsol kurulumu tamamlandı] |
Kurulum sırasında, lisans sözleşmesi isteyecek, tip 1'i kabul edecek ve Scala'nın kurulacağı yolu soracaktır. / Usr / local / share yazdım , rahatınıza göre uygun bir yol seçebilirsiniz. |
Son olarak, yeni bir komut istemi açın ve yazın Scala -versionve Enter tuşuna basın. Aşağıdakileri görmelisiniz -
Platform | Komut | Çıktı |
---|---|---|
pencereler | \> ölçekleme sürümü |
Scala kod çalıştırıcısı sürüm 2.13.1 - Telif Hakkı 2002-2019, LAMP / EPFL ve Lightbend, Inc. |
Linux | $ scala -version |
Scala kod çalıştırıcısı sürüm 2.13.1 - Telif Hakkı 2002-2019, LAMP / EPFL ve Lightbend, Inc.tut |
Scala bir veri yapısı sağlar, array, aynı türden öğelerin sabit boyutlu sıralı bir koleksiyonunu depolayan. Bir dizi, bir veri koleksiyonunu depolamak için kullanılır, ancak bir diziyi aynı türden bir değişkenler koleksiyonu olarak düşünmek genellikle daha kullanışlıdır.
Sayı0, sayı1, ... ve sayı99 gibi tek tek değişkenleri bildirmek yerine, sayılar gibi bir dizi değişkeni bildirir ve temsil etmek için sayılar [0], sayılar [1] ve ..., sayılar [99] kullanırsınız bireysel değişkenler. Bu öğretici, dizi değişkenlerinin nasıl bildirileceğini, dizilerin nasıl oluşturulacağını ve dizinlenmiş değişkenler kullanılarak dizilerin nasıl işleneceğini açıklamaktadır. Bir dizinin ilk öğesinin dizini sıfır sayısıdır ve son öğenin dizini, öğelerin toplam sayısı eksi birdir.
Dizi Değişkenlerini Bildirme
Bir programda bir dizi kullanmak için, diziye başvurmak üzere bir değişken bildirmeniz ve değişkenin başvurabileceği dizi türünü belirtmeniz gerekir.
Aşağıda, bir dizi değişkenini bildirmek için sözdizimi verilmiştir.
Sözdizimi
var z:Array[String] = new Array[String](3)
or
var z = new Array[String](3)
Burada z, en fazla üç öğe tutabilen bir Dizeler dizisi olarak bildirilir. Değerler tek tek öğelere atanabilir veya tek tek öğelere erişim elde edilebilir, aşağıdaki gibi komutlar kullanılarak yapılabilir -
Komut
z(0) = "Zara"; z(1) = "Nuha"; z(4/2) = "Ayan"
Buradaki son örnek, genel olarak dizinin tam sayı veren herhangi bir ifade olabileceğini göstermektedir. Bir diziyi tanımlamanın bir yolu daha var -
var z = Array("Zara", "Nuha", "Ayan")
Aşağıdaki resim bir diziyi temsil eder myList. Buraya,myList on çift değer tutar ve endeksler 0'dan 9'a kadardır.
Dizileri İşleme
Dizi öğelerini işlerken, genellikle döngü kontrol yapılarını kullanırız çünkü bir dizideki tüm öğeler aynı türdedir ve dizinin boyutu bilinir.
Aşağıda dizilerin nasıl oluşturulacağını, başlatılacağını ve işleneceğini gösteren örnek bir program bulunmaktadır -
Misal
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);
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
1.9
2.9
3.4
3.5
Total is 11.7
Max is 3.5
Scala, çeşitli dizi işlemlerini doğrudan desteklemez ve herhangi bir boyuttaki dizileri işlemek için çeşitli yöntemler sağlar. Farklı yöntemleri kullanmak istiyorsanız, içe aktarmanız gerekir.Array._ paketi.
Çok boyutlu dizileri tanımlamanız ve kullanmanız gereken birçok durum vardır (yani, elemanları diziler olan diziler). Örneğin, matrisler ve tablolar, iki boyutlu diziler olarak gerçekleştirilebilecek yapı örnekleridir.
Aşağıda, iki boyutlu bir dizi tanımlama örneği verilmiştir -
var myMatrix = ofDim[Int](3,3)
Bu, her biri üç öğe içeren bir tamsayı dizisi olan üç öğeye sahip bir dizidir.
Çok boyutlu bir diziyi işlemek için aşağıdaki örnek programı deneyin -
Misal
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();
}
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
0 1 2
0 1 2
0 1 2
Belirli bir aralıkta artan tam sayı dizisini içeren bir dizi oluşturmak için range () yönteminin kullanılması. Diziyi oluşturmak için son bağımsız değişkeni adım olarak kullanabilirsiniz; son argümanı kullanmazsanız, adım 1 olarak kabul edilir.
Bir aralık dizisi oluşturmanın bir örneğini ele alalım (10, 20, 2): Bu, 10 ile 20 arasındaki öğeler ve aralık farkı 2 olan bir dizi oluşturmak anlamına gelir. Dizideki öğeler 10, 12, 14, 16 ve 18'dir. .
Başka bir örnek: aralık (10, 20). Burada aralık farkı verilmez, bu nedenle varsayılan olarak 1 eleman olduğunu varsayar. Aralık farkı 1 ile 10 ile 20 arasındaki öğelerle bir dizi oluşturur. Dizideki öğeler 10, 11, 12, 13, ... ve 19'dur.
Aşağıdaki örnek program, aralıklarla bir dizinin nasıl oluşturulacağını gösterir.
Misal
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 )
}
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
10 12 14 16 18
10 11 12 13 14 15 16 17 18 19
Scala bir veri yapısı sağlar, ArrayBuffer, başlangıç boyutu kısaldığında boyutu değiştirebilir. Dizi sabit boyutta olduğundan ve bir dizide daha fazla öğe kullanılamadığından, ArrayBuffer, boyutun esnek olduğu diziye bir alternatiftir.
ArrayBuffer, öğeleri depolamak için dahili olarak geçerli boyutta bir dizi tutar. Yeni bir eleman eklendiğinde boyut kontrol edilir. Temel dizinin dolu olması durumunda, yeni bir daha büyük dizi oluşturulur ve tüm öğeler daha büyük diziye kopyalanır.
ArrayBuffer Değişkenlerini Bildirme
Aşağıda, ArrayBuffer değişkenini bildirmek için sözdizimi verilmiştir.
Sözdizimi
var z = ArrayBuffer[String]()
Burada z, başlangıçta boş olan Dizelerin bir dizi tamponu olarak bildirilir. Değerler, aşağıdaki gibi komutlar kullanılarak eklenebilir -
Komut
z += "Zara";
z += "Nuha";
z += "Ayan";
ArrayBuffer işleniyor
Aşağıda, ArrayBuffer'ın nasıl oluşturulacağını, başlatılacağını ve işleneceğini gösteren örnek bir program bulunmaktadır -
Misal
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));
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
ArrayBuffer(Zara, Nuha, Ayan)
ArrayBuffer(Zara, Nuha, Ayan, Welcome, To, Tutorialspoint)
Nuha
Scala Listeleri dizilere oldukça benzer, yani bir listedeki tüm elemanlar aynı türe sahiptir, ancak iki önemli fark vardır. Birincisi, listeler değişmezdir, yani bir listenin öğeleri atama ile değiştirilemez. İkinci olarak, listeler bağlantılı bir listeyi temsil ederken diziler düzdür.
T tipi elemanlara sahip bir listenin tipi şu şekilde yazılır: List[T].
Aşağıdaki örneği deneyin, burada çeşitli veri türleri için tanımlanmış birkaç liste bulunmaktadır.
// 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)
)
Tüm listeler iki temel yapı taşı kullanılarak tanımlanabilir, bir kuyruk Nil ve ::, telaffuz edilen cons. Nil ayrıca boş listeyi temsil eder. Yukarıdaki tüm listeler aşağıdaki gibi tanımlanabilir.
// 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
Listelerdeki Temel İşlemler
Listelerdeki tüm işlemler aşağıdaki üç yöntemle ifade edilebilir.
Sr.No | Yöntemler ve Açıklama |
---|---|
1 | head Bu yöntem, bir listenin ilk öğesini döndürür. |
2 | tail Bu yöntem, ilki dışındaki tüm öğelerden oluşan bir liste döndürür. |
3 | isEmpty Liste boşsa bu yöntem true, aksi takdirde false döndürür. |
Aşağıdaki örnek, yukarıdaki yöntemlerin nasıl kullanılacağını gösterir.
Misal
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 )
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
Head of fruit : apples
Tail of fruit : List(oranges, pears)
Check if fruit is empty : false
Check if nums is empty : true
Listeleri Birleştirme
İkisini de kullanabilirsiniz ::: operatör veya List.:::() yöntem veya List.concat()iki veya daha fazla liste eklemek için yöntem. Lütfen aşağıda verilen aşağıdaki örneği bulun -
Misal
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 )
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
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)
Üniforma Listeleri Oluşturma
Kullanabilirsiniz List.fill()yöntem aynı elemanın sıfır veya daha fazla kopyasından oluşan bir liste oluşturur. Aşağıdaki örnek programı deneyin.
Misal
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 )
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
fruit : List(apples, apples, apples)
num : List(2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
Bir Fonksiyonu Tablo Oluşturma
İle birlikte bir işlevi kullanabilirsiniz List.tabulate()Listeyi tablo haline getirmeden önce listenin tüm öğelerine uygulama yöntemi. Argümanları List.fill'inkiler gibidir: ilk argüman listesi oluşturulacak listenin boyutlarını verir ve ikincisi listenin öğelerini açıklar. Tek fark, sabitlenen elemanlar yerine bir fonksiyondan hesaplanmalarıdır.
Aşağıdaki örnek programı deneyin.
Misal
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 )
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
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))
Ters Liste Sırası
Kullanabilirsiniz List.reverselistenin tüm öğelerini tersine çevirme yöntemi. Aşağıdaki örnek, kullanımı göstermektedir.
Misal
object Demo {
def main(args: Array[String]) {
val fruit = "apples" :: ("oranges" :: ("pears" :: Nil))
println( "Before reverse fruit : " + fruit )
println( "After reverse fruit : " + fruit.reverse )
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
Before reverse fruit : List(apples, oranges, pears)
After reverse fruit : List(pears, oranges, apples)
Scala bir veri yapısı sağlar, ListBufferBu, bir listedeki öğeleri eklerken / kaldırırken List'den daha etkilidir. Öğeleri bir listeye eklemek, eklemek için yöntemler sağlar.
ListBuffer Değişkenlerini Bildirme
Aşağıda bir ListBuffer değişkenini bildirmek için sözdizimi verilmiştir.
Sözdizimi
var z = ListBuffer[String]()
Burada z, başlangıçta boş olan Dizelerin bir liste tamponu olarak bildirilir. Değerler, aşağıdaki gibi komutlar kullanılarak eklenebilir -
Komut
z += "Zara";
z += "Nuha";
z += "Ayan";
İşleme Listesi
Aşağıda ListBuffer'ın nasıl oluşturulacağını, başlatılacağını ve işleneceğini gösteren örnek bir program bulunmaktadır -
Misal
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));
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
ListBuffer(Zara, Nuha, Ayan)
ListBuffer(Zara, Nuha, Ayan, Welcome, To, Tutorialspoint)
Nuha
Scala Set, aynı türden ikili farklı unsurların bir koleksiyonudur. Başka bir deyişle, bir Set, yinelenen öğeler içermeyen bir koleksiyondur. ListSet değişmez kümeler uygular ve liste yapısını kullanır. Öğeler saklanırken öğe ekleme sırası korunur.
ListSet Değişkenlerini Bildirme
Aşağıda bir ListSet değişkeni bildirmek için sözdizimi verilmiştir.
Sözdizimi
var z : ListSet[String] = ListSet("Zara","Nuha","Ayan")
Burada z, üç üyesi olan bir Dizeler listesi olarak tanımlanır. Değerler, aşağıdaki gibi komutlar kullanılarak eklenebilir -
Komut
var myList1: ListSet[String] = myList + "Naira";
İşleme Listesi
Aşağıda, ListSet'in nasıl oluşturulacağını, başlatılacağını ve işleneceğini gösteren örnek bir program bulunmaktadır -
Misal
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);
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
ListSet(Zara, Nuha, Ayan)
ListSet(Zara, Nuha, Ayan, Naira)
ListSet(Zara, Ayan)
ListSet()
Scala Vector, öğelere rastgele erişilebilen genel amaçlı, değişmez bir veri yapısıdır. Genellikle büyük veri koleksiyonları için kullanılır.
Vektör Değişkenlerini Bildirme
Aşağıda bir Vector değişkeni bildirmek için sözdizimi verilmiştir.
Sözdizimi
var z : Vector[String] = Vector("Zara","Nuha","Ayan")
Burada z, üç üyesi olan Dizelerin bir vektörü olarak tanımlanır. Değerler, aşağıdaki gibi komutlar kullanılarak eklenebilir -
Komut
var vector1: Vector[String] = z + "Naira";
Vektör işleme
Aşağıda Vector'ün nasıl oluşturulacağını, başlatılacağını ve işleneceğini gösteren örnek bir program bulunmaktadır -
Misal
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);
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
Vector(Zara, Nuha, Ayan)
Vector(Zara, Nuha, Ayan, Naira)
Vector(Ayan, Nuha, Zara)
Vector(Ayan, Naira, Nuha, Zara)
Scala Set, aynı türden ikili farklı unsurların bir koleksiyonudur. Başka bir deyişle, bir Set, yinelenen öğeler içermeyen bir koleksiyondur. İki tür Set vardır:immutable ve mutable. Değişken ve değişmez nesneler arasındaki fark, bir nesne değişmez olduğunda, nesnenin kendisinin değiştirilememesidir.
Scala varsayılan olarak değişmez Seti kullanır. Değiştirilebilir Seti kullanmak istiyorsanız, içe aktarmanız gerekecekscala.collection.mutable.Setsınıf açıkça. Aynı koleksiyonda hem değiştirilebilir hem de değişmez kümeleri kullanmak istiyorsanız, değişmez Küme'ye şu şekilde başvurmaya devam edebilirsiniz:Set ancak değiştirilebilir Set'e şu şekilde başvurabilirsiniz: mutable.Set.
Değişmez Kümeleri nasıl ilan edeceğiniz aşağıda açıklanmıştır -
Sözdizimi
// 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)
Boş bir küme tanımlanırken, sistemin değişkene somut bir tip ataması gerektiğinden tip ek açıklaması gereklidir.
Sette Temel İşlemler
Setlerdeki tüm işlemler aşağıdaki üç yöntemle ifade edilebilir:
Sr.No | Yöntemler ve Açıklama |
---|---|
1 | head Bu yöntem, bir kümenin ilk öğesini döndürür. |
2 | tail Bu yöntem, ilki dışındaki tüm öğelerden oluşan bir küme döndürür. |
3 | isEmpty Bu yöntem, küme boşsa, aksi takdirde yanlışsa doğru döndürür. |
Temel işletim yöntemlerinin kullanımını gösteren aşağıdaki örneği deneyin -
Misal
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 )
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
Head of fruit : apples
Tail of fruit : Set(oranges, pears)
Check if fruit is empty : false
Check if nums is empty : true
Birleştirme Setleri
İkisini de kullanabilirsiniz ++ operatör veya Set.++() iki veya daha fazla seti birleştirmek için yöntem, ancak kümeler eklerken yinelenen öğeleri kaldıracaktır.
Aşağıdaki, iki kümeyi birleştirme örneğidir.
Misal
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 )
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
fruit1 ++ fruit2 : Set(banana, apples, mangoes, pears, oranges)
fruit1.++(fruit2) : Set(banana, apples, mangoes, pears, oranges)
Bir Kümedeki Max, Min Elemanları Bul
Kullanabilirsiniz Set.min minimum bulma yöntemi ve Set.maxBir kümede bulunan maksimum eleman sayısını bulma yöntemi. Programı göstermek için örnek aşağıdadır.
Misal
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 )
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
Min element in Set(5,6,9,20,30,45) : 5
Max element in Set(5,6,9,20,30,45) : 45
Ortak Değer Ekleri Bulun
İkisini de kullanabilirsiniz Set.& yöntem veya Set.intersectiki küme arasındaki ortak değerleri bulma yöntemi. Kullanımı göstermek için aşağıdaki örneği deneyin.
Misal
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) )
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
num1.&(num2) : Set(20, 9)
num1.intersect(num2) : Set(20, 9)
Bit kümesi, değiştirilebilir ve değiştirilemez bit kümeleri için ortak bir temel sınıftır. Bit kümeleri, negatif olmayan tam sayılardan oluşan kümelerdir ve 64 bit sözcükler halinde paketlenmiş değişken boyutlu bit dizileri olarak temsil edilir. Bir bit kümesinin bellek ayak izi, içinde depolanan en büyük sayı ile temsil edilir.
BitSet Değişkenlerini Bildirme
Aşağıda bir BitSet değişkenini bildirmek için sözdizimi verilmiştir.
Sözdizimi
var z : BitSet = BitSet(0,1,2)
Burada z, üç üyesi olan negatif olmayan tamsayılardan oluşan bir bit kümesi olarak tanımlanır. Değerler, aşağıdaki gibi komutlar kullanılarak eklenebilir -
Komut
var myList1: BitSet = myList + 3;
BitSet işleniyor
Aşağıda, BitSet'in nasıl oluşturulacağını, başlatılacağını ve işleneceğini gösteren örnek bir program bulunmaktadır -
Misal
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);
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
BitSet(0, 1, 2)
BitSet(0, 1, 2, 3)
BitSet(0, 1)
BitSet(0, 1, 2, 3, 4, 5)
Scala Set, aynı türden ikili farklı unsurların bir koleksiyonudur. Başka bir deyişle, bir Set, yinelenen öğeler içermeyen bir koleksiyondur. HashSet, değişmez kümeler uygular ve karma tablo kullanır. Öğeler ekleme sırası korunmaz.
HashSet Değişkenlerini Bildirme
Aşağıda bir HashSet değişkeni bildirmek için sözdizimi verilmiştir.
Sözdizimi
var z : HashSet[String] = HashSet("Zara","Nuha","Ayan")
Burada z, üç üyesi olan bir dizge kümesi olarak tanımlanır. Değerler, aşağıdaki gibi komutlar kullanılarak eklenebilir -
Komut
var myList1: HashSet[String] = myList + "Naira";
HashSet işleniyor
Aşağıda HashSet'in nasıl oluşturulacağını, başlatılacağını ve işleneceğini gösteren örnek bir program bulunmaktadır -
Misal
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);
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
HashSet(Zara, Nuha, Ayan)
HashSet(Zara, Nuha, Ayan, Naira)
HashSet(Zara, Ayan)
HashSet()
Scala Set, aynı türden ikili farklı unsurların bir koleksiyonudur. Başka bir deyişle, bir Set, yinelenen öğeler içermeyen bir koleksiyondur. TreeSet, değişmez kümeler uygular ve öğeleri sıralı düzende tutar.
TreeSet Değişkenlerini Bildirme
Aşağıda bir TreeSet değişkeni bildirmek için sözdizimi verilmiştir.
Sözdizimi
var z : TreeSet[String] = TreeSet("Zara","Nuha","Ayan")
Burada z, üç üyesi olan bir Dizeler ağaç kümesi olarak ilan edilir. Değerler, aşağıdaki gibi komutlar kullanılarak eklenebilir -
Komut
var myList1: TreeSet[String] = myList + "Naira";
TreeSet işleniyor
Aşağıda, TreeSet'in nasıl oluşturulacağını, başlatılacağını ve işleneceğini gösteren örnek bir program bulunmaktadır -
Misal
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);
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
TreeSet(Ayan, Nuha, Zara)
TreeSet(Ayan, Naira, Nuha, Zara)
TreeSet(Ayan, Zara)
TreeSet()
Scala haritası, anahtar / değer çiftlerinden oluşan bir koleksiyondur. Herhangi bir değer, anahtarına bağlı olarak alınabilir. Anahtarlar Harita'da benzersizdir, ancak değerlerin benzersiz olması gerekmez. Haritalara ayrıca Karma tablolar da denir. İki tür Harita vardır:immutable ve mutable. Değişken ve değişmez nesneler arasındaki fark, bir nesne değişmez olduğunda, nesnenin kendisinin değiştirilememesidir.
Varsayılan olarak, Scala değişmez Haritayı kullanır. Değişken Haritayı kullanmak istiyorsanız, içeri aktarmanız gerekecekscala.collection.mutable.Mapsınıf açıkça. Hem değiştirilebilir hem de değişmez Haritaları aynı anda kullanmak istiyorsanız, değişmez Haritaya şu şekilde atıfta bulunmaya devam edebilirsiniz:Map ancak değiştirilebilir kümeye şu şekilde başvurabilirsiniz: mutable.Map.
Aşağıda, değişmez Haritaları beyan etmek için örnek ifadeler verilmiştir -
// 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")
Boş harita tanımlanırken, sistemin değişkene somut bir tip ataması gerektiğinden tip ek açıklaması gereklidir. Bir Haritaya anahtar-değer çifti eklemek istersek, + operatörünü aşağıdaki gibi kullanabiliriz.
A + = ('I' -> 1)
A + = ('J' -> 5)
A + = ('K' -> 10)
A + = ('L' -> 100)
MAP üzerindeki Temel İşlemler
Haritalardaki tüm işlemler aşağıdaki üç yöntemle ifade edilebilir.
Sr.No | Yöntemler ve Açıklama |
---|---|
1 | keys Bu yöntem, haritadaki her anahtarı içeren bir yinelenebilir döndürür. |
2 | values Bu yöntem, haritadaki her bir değeri içeren bir yinelenebilir döndürür. |
3 | isEmpty Bu yöntem, harita boşsa doğru, aksi takdirde yanlış döndürür. |
Harita yöntemlerinin kullanımını gösteren aşağıdaki örnek programı deneyin.
Misal
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 )
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
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
Haritaları Birleştirme
İkisini de kullanabilirsiniz ++ operatör veya Map.++() iki veya daha fazla Haritayı birleştirme yöntemidir, ancak Haritalar eklenirken yinelenen anahtarları kaldırır.
İki Haritayı birleştirmek için aşağıdaki örnek programı deneyin.
Misal
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 )
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
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)
Bir Haritadan Anahtarları ve Değerleri Yazdır
"Foreach" döngüsünü kullanarak bir Haritanın anahtarları ve değerleri arasında yineleme yapabilirsiniz. Burada yöntem kullandıkforeachanahtarlar arasında gezinmek için yineleyici ile ilişkili. Örnek program aşağıdadır.
Misal
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) )
}
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
Key = red Value = #FF0000
Key = azure Value = #F0FFFF
Key = peru Value = #CD853F
Haritada bir anahtarı kontrol edin
İkisini de kullanabilirsiniz Map.containsBelirli bir anahtarın haritada olup olmadığını test etme yöntemi. Anahtar kontrolü için aşağıdaki örnek programı deneyin.
Misal
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")
}
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
Red key exists with value :#FF0000
Maroon key does not exist
Scala haritası, anahtar / değer çiftlerinden oluşan bir koleksiyondur. Herhangi bir değer, anahtarına bağlı olarak alınabilir. Anahtarlar Harita'da benzersizdir, ancak değerlerin benzersiz olması gerekmez. HashMap değişmez eşlemeyi uygular ve aynısını uygulamak için karma tablo kullanır.
HashMap Değişkenlerini Bildirme
Aşağıda bir HashMap değişkeni bildirmek için sözdizimi verilmiştir.
Sözdizimi
val colors = HashMap("red" -> "#FF0000", "azure" -> "#F0FFFF", "peru" -> "#CD853F")
Burada renkler, üç anahtar-değer çiftine sahip olan Dizelerin, Int'in bir karma haritası olarak bildirilir. Değerler, aşağıdaki gibi komutlar kullanılarak eklenebilir -
Komut
var myMap1: HashMap[Char, Int] = colors + ("black" -> "#000000");
HashMap işleniyor
Aşağıda HashMap'in nasıl oluşturulacağını, başlatılacağını ve işleneceğini gösteren örnek bir program verilmiştir -
Misal
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);
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
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()
Scala haritası, anahtar / değer çiftlerinden oluşan bir koleksiyondur. Herhangi bir değer, anahtarına bağlı olarak alınabilir. Anahtarlar Harita'da benzersizdir, ancak değerlerin benzersiz olması gerekmez. ListMap değişmez eşlemeyi uygular ve aynısını uygulamak için listeyi kullanır. Az sayıda eleman ile kullanılır.
ListMap Değişkenlerini Bildirme
Aşağıda bir ListMap değişkenini bildirmek için sözdizimi verilmiştir.
Sözdizimi
val colors = ListMap("red" -> "#FF0000", "azure" -> "#F0FFFF", "peru" -> "#CD853F")
Burada renkler, üç anahtar-değer çiftine sahip olan Dizelerin, Int'in bir karma haritası olarak bildirilir. Değerler, aşağıdaki gibi komutlar kullanılarak eklenebilir -
Komut
var myMap1: ListMap[Char, Int] = colors + ("black" -> "#000000");
İşleme Listesi Haritası
Aşağıda ListMap'in nasıl oluşturulacağını, başlatılacağını ve işleneceğini gösteren örnek bir program bulunmaktadır -
Misal
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);
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
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()
Yineleyici bir koleksiyon değil, daha çok bir koleksiyonun öğelerine tek tek erişmenin bir yoludur. Bir üzerinde iki temel işlemiterator it vardır next ve hasNext. Bir çağrıit.next()yineleyicinin bir sonraki öğesini döndürür ve yineleyicinin durumunu ilerletir. Yineleyici'yi kullanarak döndürülecek daha fazla öğe olup olmadığını öğrenebilirsiniz.it.hasNext yöntem.
Bir yineleyici tarafından döndürülen tüm öğeleri "adım adım ilerletmenin" en kolay yolu bir while döngüsü kullanmaktır. Aşağıdaki örnek programı takip edelim.
Misal
object Demo {
def main(args: Array[String]) {
val it = Iterator("a", "number", "of", "words")
while (it.hasNext){
println(it.next())
}
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
a
number
of
words
Min ve Maks Değerli Öğeyi Bul
Kullanabilirsiniz it.min ve it.maxbir yineleyiciden minimum ve maksimum değerli öğeleri bulma yöntemleri. Burada kullandıkita ve itbYineleyici yalnızca bir kez geçilebildiğinden iki farklı işlem gerçekleştirmek için. Örnek program aşağıdadır.
Misal
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 )
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
Maximum valued element 90
Minimum valued element 2
Yineleyicinin Uzunluğunu Bulun
İkisini de kullanabilirsiniz it.size veya it.lengthbir yineleyicide bulunan öğelerin sayısını bulma yöntemleri. Burada ita ve itb'yi iki farklı işlemi gerçekleştirmek için kullandık çünkü yineleyici yalnızca bir kez geçilebilir. Örnek program aşağıdadır.
Misal
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 )
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
Value of ita.size : 6
Value of itb.length : 6
Scala Seçeneği [T], sıfır veya belirli bir türden bir eleman için bir kaptır. Bir Seçenek [T] şunlar olabilir:Some[T] veya Noneeksik bir değeri temsil eden nesne. Örneğin, belirli bir anahtara karşılık gelen bir değer bulunursa, Scala Haritasının get yöntemi Bazı (değer) üretir veyaNone verilen anahtar haritada tanımlı değilse.
Seçenek türü Scala programlarında sıklıkla kullanılır ve bunu, nullJava'da hiçbir değer belirtmeyen değer. Örneğin, java.util.HashMap'in get yöntemi, HashMap'te saklanan bir değeri veya hiçbir değer bulunmadıysa null döndürür.
Bir birincil anahtara dayalı olarak veritabanından bir kayıt alan bir yöntemimiz olduğunu varsayalım.
def findPerson(key: Int): Option[Person]
Yöntem, kayıt bulunursa Bazı [Kişi], kayıt bulunamazsa Hiçbiri döndürür. Aşağıdaki programı takip edelim.
Misal
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" ))
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
capitals.get( "France" ) : Some(Paris)
capitals.get( "India" ) : None
İsteğe bağlı değerleri ayırmanın en yaygın yolu bir kalıp eşleştirmesidir. Örneğin aşağıdaki programı deneyin.
Misal
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 => "?"
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
show(capitals.get( "Japan")) : Tokyo
show(capitals.get( "India")) : ?
GetOrElse () Yöntemini Kullanma
Aşağıda, bir değere veya hiçbir değer olmadığında bir varsayılana erişmek için getOrElse () yönteminin nasıl kullanılacağını gösteren örnek program verilmiştir.
Misal
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) )
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
a.getOrElse(0): 5
b.getOrElse(10): 10
İsEmpty () Yöntemini Kullanma
Aşağıda, seçeneğin None olup olmadığını kontrol etmek için isEmpty () yönteminin nasıl kullanılacağını gösteren örnek program verilmiştir.
Misal
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 )
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Misal
a.isEmpty: false
b.isEmpty: true
Kuyruk İlk Giren İlk Çıkar, FIFO veri yapısıdır ve öğeleri FIFO tarzında eklemeye ve almaya izin verir.
Kuyruk Değişkenlerini Bildirme
Aşağıda bir Kuyruk değişkeni bildirmek için sözdizimi verilmiştir.
Sözdizimi
val queue = Queue(1, 2, 3, 4, 5)
Burada sıra, sayıların Sırası olarak ilan edilir. Değer, aşağıdaki gibi komutlar kullanılarak öne eklenebilir -
Komut
queue.enqueue(6)
Değer, aşağıdaki gibi komutlar kullanılarak önden alınabilir -
Komut
queue.dequeue()
İşleme Kuyruğu
Aşağıda, Kuyruğun nasıl oluşturulacağını, başlatılacağını ve işleneceğini gösteren örnek bir program bulunmaktadır -
Misal
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+ " ")}
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
1 2 3 4 5
First Element: 1
1 2 3 4 5 6
Dequeued Element: 1
2 3 4 5 6
Scala tuple, sabit sayıda öğeyi bir bütün olarak aktarılabilmeleri için bir araya getirir. Bir dizi veya listeden farklı olarak, bir demet farklı türlerdeki nesneleri tutabilir ancak bunlar aynı zamanda değişmezdir.
Aşağıda, bir tamsayı, bir dize ve konsol içeren bir demet örneğidir.
val t = (1, "hello", Console)
Aşağıdakiler için sözdizimsel şeker (kısa yol) hangisidir -
val t = new Tuple3(1, "hello", Console)
Bir demetinin gerçek türü, içerdiği öğelerin sayısına ve bu öğelerin türlerine bağlıdır. Bu nedenle, (99, "Luftballons") tipi Tuple2 [Int, String] 'dir. ('U', 'r', "the", 1, 4, "me") türü Tuple6'dır [Char, Char, String, Int, Int, String]
Tuple'lar Tuple1, Tuple2, Tuple3 ve benzeri türlerdedir. Şu anda Scala'da 22'lik bir üst sınır vardır, daha fazlasına ihtiyacınız varsa, o zaman bir grup değil, bir koleksiyon kullanabilirsiniz. 1 <= N <= 22 olan her TupleN türü için, Scala bir dizi öğe erişim yöntemi tanımlar. Aşağıdaki tanım göz önüne alındığında -
val t = (4,3,2,1)
Bir tuple t'nin öğelerine erişmek için, birinci öğeye erişmek için t._1 yöntemini, ikinciye erişmek için t._2 yöntemini vb. Kullanabilirsiniz. Örneğin, aşağıdaki ifade t'nin tüm elemanlarının toplamını hesaplar.
val sum = t._1 + t._2 + t._3 + t._4
Bir List [Double] alan ve üç öğeli bir Tuple, bir Tuple3 [Int, Double, Double] içinde döndürülen karelerin sayısını, toplamını ve toplamını döndüren bir yöntem yazmak için Tuple'ı kullanabilirsiniz. Aynı zamanda, eşzamanlı programlamada aktörler arasında mesaj olarak veri değerleri listesini iletmek için de kullanışlıdırlar.
Aşağıdaki örnek programı deneyin. Bir demetinin nasıl kullanılacağını gösterir.
Misal
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 )
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komutlar
\>scalac Demo.scala
\>scala Demo
Çıktı
Sum of elements: 10
Tuple üzerinde yineleyin
Kullanabilirsiniz Tuple.productIterator() Tuple'ın tüm öğeleri üzerinde yineleme yöntemi.
Tupleları yinelemek için aşağıdaki örnek programı deneyin.
Misal
object Demo {
def main(args: Array[String]) {
val t = (4,3,2,1)
t.productIterator.foreach{ i =>println("Value = " + i )}
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komutlar
\>scalac Demo.scala
\>scala Demo
Çıktı
Value = 4
Value = 3
Value = 2
Value = 1
Dizeye Dönüştürme
Kullanabilirsiniz Tuple.toString()demetin tüm öğelerini bir dizeye birleştirme yöntemi. String'e dönüştürmek için aşağıdaki örnek programı deneyin.
Misal
object Demo {
def main(args: Array[String]) {
val t = new Tuple3(1, "hello", Console)
println("Concatenated String: " + t.toString() )
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
Concatenated String: (1,hello,scala.Console$@281acd47)
Öğeleri Değiştirin
Kullanabilirsiniz Tuple.swap Tuple2 öğelerini takas etme yöntemi.
Öğeleri değiştirmek için aşağıdaki örnek programı deneyin.
Misal
object Demo {
def main(args: Array[String]) {
val t = new Tuple2("Scala", "hello")
println("Swapped Tuple: " + t.swap )
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
Swapped tuple: (hello,Scala)
Scala Seq, değişmez dizileri temsil eden bir özelliktir. Bu yapı, indeks tabanlı erişim ve öğeleri, oluşumlarını ve alt dizilerini bulmak için çeşitli yardımcı yöntemler sağlar. Bir Seq, ekleme sırasını korur.
Sıra Değişkenlerini Bildirme
Aşağıda bir Seq değişkenini bildirmek için sözdizimi verilmiştir.
Sözdizimi
val seq: Seq[Int] = Seq(1, 2, 3, 4, 5)
Burada seq, bir sayı dizisi olarak ilan edilir. Seq, aşağıdaki gibi komutlar sağlar -
Komut
val isPresent = seq.contains(4);
val contains = seq.endsWith(Seq(4,5));
var lastIndexOf = seq.lasIndexOf(5);
İşleme Sırası
Aşağıda, Seq'in nasıl oluşturulacağını, başlatılacağını ve işleneceğini gösteren örnek bir program bulunmaktadır -
Misal
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)
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
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)
Yığın Son Giren İlk Çıkar, LIFO veri yapısıdır ve LIFO tarzında üstte eleman yerleştirmeye ve almaya izin verir.
Yığın Değişkenlerini Bildirme
Aşağıda bir Yığın değişkenini bildirmek için sözdizimi verilmiştir.
Sözdizimi
val stack = Stack(1, 2, 3, 4, 5)
Burada yığın, sayı yığını olarak tanımlanır. Değer, aşağıdaki gibi komutlar kullanılarak en üste eklenebilir -
Komut
stack.push(6)
Değer, aşağıdaki gibi komutlar kullanılarak üstten alınabilir -
Komut
stack.top
Değer, aşağıdaki gibi komutlar kullanılarak yukarıdan kaldırılabilir -
Komut
stack.pop
İşleme Yığını
Aşağıda Stack'in nasıl oluşturulacağını, başlatılacağını ve işleneceğini gösteren örnek bir program bulunmaktadır -
Misal
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)
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
Top Element: 2
Removed Element: 2
Top Element: 1
Scala Stream, tembel değerlendirme özelliğine sahip özel bir listedir. Ölçekli akışta, öğeler yalnızca ihtiyaç duyulduğunda değerlendirilir. Akış, tembel hesaplamayı destekler ve performans konusunda bilgili.
Akış Değişkenlerini Bildirme
Aşağıda bir Stream değişkenini bildirmek için sözdizimi verilmiştir.
Sözdizimi
val stream = 1 #:: 2 #:: 3 #:: Stream.empty
Burada akım bir sayı akışı olarak ilan edilir. Burada 1 akışın başı, 2, 3 akıntının kuyruğu. Stream.empty, akışın sonunu gösterir. Değerler, aşağıdaki gibi alma komutları kullanılarak alınabilir -
Komut
stream.take(2)
Akış İşleme
Aşağıda, Akışın nasıl oluşturulacağını, başlatılacağını ve işleneceğini gösteren örnek bir program bulunmaktadır -
Misal
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")
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
Stream(1, <not computed>)
1, 2
Stream: Stream()
drop () yöntemi, List tarafından listenin ilk n öğesi dışındaki tüm öğeleri seçmek için kullanılan yöntemdir.
Sözdizimi
Aşağıdakiler, bırakma yönteminin sözdizimidir.
def drop(n: Int): List[A]
Burada n, listeden çıkarılacak eleman sayısıdır. Bu yöntem, listenin ilk n olanlar dışındaki tüm öğelerini döndürür.
Kullanım
Aşağıda drop yönteminin nasıl kullanılacağını gösteren örnek bir program bulunmaktadır -
Misal
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)
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
List(1, 2, 3, 4, 5)
List(4, 5)
dropWhile () yöntemi, List tarafından belirli bir koşulu sağlayan tüm öğeleri bırakmak için kullanılan bir yöntemdir.
Sözdizimi
DropWhile yönteminin sözdizimi aşağıdadır.
def dropWhile(p: (A) => Boolean): List[A]
Burada, p: (A) => Boole, listenin her bir öğesine uygulanacak bir yüklem veya koşuldur. Bu yöntem, listenin bırakılanlar dışındaki tüm öğelerini döndürür.
Kullanım
DropWhile yönteminin nasıl kullanılacağını gösteren örnek bir program aşağıdadır -
Misal
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)
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
List(3, 6, 9, 4, 2)
List(4, 2)
filter () yöntemi, List tarafından belirli bir koşulu karşılayan tüm öğeleri seçmek için kullanılan bir yöntemdir.
Sözdizimi
Aşağıda, filtre yönteminin sözdizimi verilmiştir.
def filter(p: (A) => Boolean): List[A]
Burada, p: (A) => Boole, listenin her bir öğesine uygulanacak bir yüklem veya koşuldur. Bu yöntem, verilen koşulu sağlayan listenin tüm öğelerini döndürür.
Kullanım
Aşağıda, filtre yönteminin nasıl kullanılacağını gösteren örnek bir program bulunmaktadır -
Misal
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)
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
List(3, 6, 9, 4, 2)
List(3, 6, 9)
find () yöntemi, belirli bir koşulu karşılayan bir öğeyi bulmak için Yineleyiciler tarafından kullanılan yöntemdir.
Sözdizimi
Aşağıdaki, bulma yönteminin sözdizimidir.
def find(p: (A) => Boolean): Option[A]
Burada, p: (A) => Boole, yineleyicinin her bir öğesine uygulanacak bir yüklem veya koşuldur. Bu yöntem, verilen koşulu karşılayan yineleyicinin eşleşen öğesini içeren Option öğesini döndürür.
Kullanım
Aşağıda, bulma yönteminin nasıl kullanılacağını gösteren örnek bir program verilmiştir -
Misal
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)
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
Some(3)
flatMap () yöntemi, TraversableLike özelliğinin yöntemidir, bir yüklem alır, bunu koleksiyonun her bir öğesine uygular ve yüklem tarafından döndürülen yeni bir öğe koleksiyonu döndürür.
Sözdizimi
Aşağıda flatMap yönteminin sözdizimi verilmiştir.
def flatMap[B](f: (A) ? GenTraversableOnce[B]): TraversableOnce[B]
Burada, f: (A)? GenTraversableOnce [B], koleksiyonun her bir öğesine uygulanacak bir tahmin veya koşuldur. Bu yöntem, verilen koşulu karşılayan yineleyicinin eşleşen öğesini içeren Option öğesini döndürür.
Kullanım
Aşağıda flatMap yönteminin nasıl kullanılacağını gösteren örnek bir program bulunmaktadır -
Misal
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)
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
List(1, 2, 5, 6, 10, 11)
flatten () yöntemi bir GenericTraversableTemplate üyesidir, alt koleksiyonları birleştirerek tek bir öğe koleksiyonu döndürür.
Sözdizimi
Aşağıda düzleştirme yönteminin sözdizimi verilmiştir.
def flatten[B]: Traversable[B]
Burada, f: (A)? GenTraversableOnce [B], koleksiyonun her bir öğesine uygulanacak bir tahmin veya koşuldur. Bu yöntem, verilen koşulu karşılayan yineleyicinin eşleşen öğesini içeren Option öğesini döndürür.
Kullanım
Aşağıda, düzleştirme yönteminin nasıl kullanılacağını gösteren örnek bir program bulunmaktadır -
Misal
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)
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
List(1, 2, 3, 4)
fold () yöntemi TraversableOnce özelliğinin bir üyesidir, koleksiyonların öğelerini daraltmak için kullanılır.
Sözdizimi
Aşağıda, katlama yönteminin sözdizimi verilmiştir.
def fold[A1 >: A](z: A1)(op: (A1, A1) ? A1): A1
Burada katlama yöntemi, ilişkilendirilebilir ikili operatör fonksiyonunu parametre olarak alır. Bu yöntem sonucu değer olarak döndürür. İlk girişi başlangıç değeri olarak ve ikinci girişi bir işlev olarak kabul eder (bu, giriş olarak birikmiş değeri ve mevcut öğeyi alır).
Kullanım
Aşağıda, katlama yönteminin nasıl kullanılacağını gösteren örnek bir program bulunmaktadır -
Misal
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)
}
}
Burada, katlama işlevine başlangıç değeri olarak 0'ı geçtik ve ardından tüm değerler eklendi. Yukarıdaki programı şuraya kaydedin:Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
10
foldLeft () yöntemi TraversableOnce özelliğinin bir üyesidir, koleksiyonların öğelerini daraltmak için kullanılır. Öğeleri Soldan Sağa sıraya taşır. Öncelikle özyinelemeli işlevlerde kullanılır ve yığın taşması istisnalarını önler.
Sözdizimi
Aşağıda, katlama yönteminin sözdizimi verilmiştir.
def foldLeft[B](z: B)(op: (B, A) ? B): B
Burada foldLeft metodu, ilişkilendirilebilir ikili operatör fonksiyonunu parametre olarak alır. Bu yöntem sonucu değer olarak döndürür.
Kullanım
Aşağıda foldLeft yönteminin nasıl kullanılacağını gösteren örnek bir program bulunmaktadır -
Misal
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)
}
}
Burada, katlama işlevine başlangıç değeri olarak 0'ı geçtik ve ardından tüm değerler eklendi. Yukarıdaki programı şuraya kaydedin:Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
10
foldRight () yöntemi, TraversableOnce özelliğinin bir üyesidir, koleksiyonların öğelerini daraltmak için kullanılır. Öğeleri Sağdan Sola sırayla gezdirir.
Sözdizimi
Aşağıda, foldRight yönteminin sözdizimi verilmiştir.
def foldRight[B](z: B)(op: (B, A) ? B): B
Burada katlama yöntemi, ilişkilendirilebilir ikili operatör fonksiyonunu parametre olarak alır. Bu yöntem sonuçlanan değeri döndürür.
Kullanım
Aşağıda, foldRight yönteminin nasıl kullanılacağını gösteren örnek bir program bulunmaktadır -
Misal
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)
}
}
Burada foldRight fonksiyonuna başlangıç değeri olarak 0'ı geçtik ve sonra tüm değerler eklendi. Yukarıdaki programı şuraya kaydedin:Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
10
map () yöntemi, TraversableLike özelliğinin bir üyesidir, bir koleksiyonun her öğesinde bir yüklem yöntemi çalıştırmak için kullanılır. Yeni bir koleksiyon döndürür.
Sözdizimi
Aşağıda harita yönteminin sözdizimi verilmiştir.
def map[B](f: (A) ? B): Traversable[B]
Burada, harita yöntemi parametre olarak bir ön işlev alır. Bu yöntem güncellenmiş koleksiyonu döndürür.
Kullanım
Aşağıda, harita yönteminin nasıl kullanılacağını gösteren örnek bir program bulunmaktadır -
Misal
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)
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
List(2, 4, 6, 8)
partition () yöntemi, TraversableLike özelliğinin bir üyesidir, bir koleksiyonun her öğesinde bir yüklem yöntemi çalıştırmak için kullanılır. İki koleksiyon döndürür; bir koleksiyon, belirli bir yüklem işlevini karşılayan öğelerden ve diğer koleksiyon, verilen yüklem işlevini karşılamayan öğelerden oluşur.
Sözdizimi
Aşağıda harita yönteminin sözdizimi verilmiştir.
def partition(p: (A) ? Boolean): (Repr, Repr)
Burada, bölümleme yöntemi parametre olarak bir ön işlev alır. Bu yöntem koleksiyonları döndürür.
Kullanım
Aşağıda, bölümleme yönteminin nasıl kullanılacağını gösteren örnek bir program bulunmaktadır -
Misal
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)
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
List(3, 6)
List(1, 2, 4, 5, 7)
azaltma () yöntemi, TraversableOnce özelliğinin bir üyesidir, koleksiyonların öğelerini daraltmak için kullanılır. Katlama yöntemine benzer ancak başlangıç değerini almaz.
Sözdizimi
Aşağıda, azaltma yönteminin sözdizimi verilmiştir.
def reduce[A1 >: A](op: (A1, A1) ? A1): A1
Burada, azaltma yöntemi, ilişkilendirilebilir ikili operatör işlevini parametre olarak alır. Bu yöntem, sonuçtaki değeri döndürür.
Kullanım
Aşağıda, katlama yönteminin nasıl kullanılacağını gösteren örnek bir program bulunmaktadır -
Misal
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)
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
10
scan () yöntemi TraversableLike özelliğinin bir üyesidir, katlama yöntemine benzer, ancak koleksiyonun her öğesine bir işlem uygulamak ve bir koleksiyon döndürmek için kullanılır.
Sözdizimi
Aşağıda, katlama yönteminin sözdizimi verilmiştir.
def scan[B >: A, That](z: B)(op: (B, B) ? B)(implicit cbf: CanBuildFrom[Repr, B, That]): That
Burada, tarama yöntemi bir parametre olarak ilişkili ikili operatör işlevini alır. Bu yöntem, sonuç olarak güncellenmiş koleksiyonu döndürür. İlk girişi başlangıç değeri ve ikinci girişi bir fonksiyon olarak kabul eder.
Kullanım
Aşağıda, tarama yönteminin nasıl kullanılacağını gösteren örnek bir program bulunmaktadır -
Misal
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)
}
}
Burada tarama fonksiyonuna başlangıç değeri olarak 0'ı geçtik ve ardından tüm değerler eklendi. Yukarıdaki programı şuraya kaydedin:Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
List(0, 1, 3, 6, 10)
zip () yöntemi, IterableLike özelliğinin bir üyesidir, bir koleksiyonu mevcut koleksiyonla birleştirmek için kullanılır ve sonuç, her iki koleksiyondan bir çift tuple öğesi koleksiyonudur.
Sözdizimi
Aşağıda zip yönteminin sözdizimi verilmiştir.
def zip[B](that: GenIterable[B]): Iterable[(A, B)]
Burada zip yöntemi parametre olarak bir koleksiyon alır. Bu yöntem, sonuç olarak güncellenmiş çift koleksiyonunu döndürür.
Kullanım
Aşağıda zip yönteminin nasıl kullanılacağını gösteren örnek bir program verilmiştir -
Misal
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)
}
}
Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.
Komut
\>scalac Demo.scala
\>scala Demo
Çıktı
List((1,A), (2,B), (3,C), (4,D))