Scala Koleksiyonları - Harita

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 Hash 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.

Scala, varsayılan olarak değişmez Harita'yı 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 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 var 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