Java’cılar Için Scala – 2 [Collections]
Bu yazıda Scala’daki collection yapılarını inceleyeceğiz.
Bir önceki yazıyı okumadıysanız aşağıdaki linkten ulaşabilirsiniz.
Array
Java’da bir array tanımı için köşeli parantezler(‘[]’), tip belirtiyor ve de boyut vermemiz gerekiyordu. Scala’da ise direkt olarak böyle bir tipimiz mevcut. Bu sayede ise çeşitli fonksiyonlara da ulaşabilir oluyoruz. Tabii ki Java’da da Arrays class’ı mevcut dolaylı da olsa Scala’da var olan methodları gerçekleştirebiliriz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
object Collections { def main(args: Array[String]): Unit ={ val nameList: Array[String] = new Array[String](3) val ageList = Array(5,3,8,7,1,9,23) nameList(0) = "biilisim.io" nameList(1) = "cem" nameList(2) = "nehir" for (i <- 0 until nameList.length){ println(nameList(i)) } ageList.map(age => println(age)) ageList.update(0,13) //replace val minNumber = ageList.min val maxNumber = ageList.max val head = ageList.head val last = ageList.last println(minNumber + " - " + maxNumber + " - " + head + " - " + last) // 1 - 23 - 13 - 23 val newAgeList: Array[Int] = ageList.drop(3) // listenin başından 3 elaman siler newAgeList.map(age => println(age)) val numbers = (1 to 10).toArray // until de kullanılabilir. numbers.map(number => println(number)) } } |
Collections
List’ler immutable yani değiştirilemezler eğer List’e ekleme yapmak istiyorsanız ArrayBuffer ve ya ListBuffer öneriliyor. Bu konu stackoverflow‘da tartışılmış incelemek isterseniz bakabilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
val cities: List[String] = List("İstanbul","Sinop","Bursa","Konya") cities.foreach(city => println(city)) var list: ListBuffer[Int] = ListBuffer() list += 4 list += 7 var fruits = new ListBuffer[String]() fruits += "mandalina" fruits += "portakal" fruits.foreach(fruit => println(fruit)) val list1: List[String] = Nil val istanbul = cities.head var tailCity = cities.tail val isEmpty: Boolean = cities.isEmpty |
2. Set
Hem mutable hem de immutable Set oluşturulabilir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
val citySet: Set[String] = Set("İzmir","Muğla","Erzurum") citySet += "Van" // compiler error. Çünkü immutable var superLig: Set[String] = Set() superLig += "fenerbahçe" superLig += "galatasaray" superLig += "beşiktaş" superLig += "trabzonspor" var ptt: Set[String] = Set("ankaragücü") ptt += "ordu spor" ptt += "giresun spor" ptt += "giresun spor" val allTeams: Set[String] = superLig ++ ptt allTeams.foreach(team => println(team)) |
3. Map
Hem mutable hem de immutable Map oluşturulabilir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
val immutableMap = Map(1 -> "cem", 2 -> "emir") //immutableMap += 3 -> "necip" // compiler error val mutableMap = collection.mutable.Map(1 -> "serra", 2 -> "nehir") mutableMap += 3 -> "necip" mutableMap += 4 -> "enes" var isMapEmpty: Boolean = immutableMap.isEmpty var value: Option[String] = immutableMap.get(1) if (value.nonEmpty){ println(value.get) println("map size:" + immutableMap.size) } mutableMap.foreach(key => println("key: " + key._1 + ", value: " + key._2)) mutableMap.remove(4) mutableMap.foreach(key => println("key: " + key._1 + ", value: " + key._2) |
4. Tuples
Farklı tipteki verileri saklayabileceğiniz bir yapıdır. Bazı diller de bu yapıya yer vermektedir. Fakat Java’da direkt olarak bir karşılığı yok.
1 2 3 4 5 6 7 8 9 10 |
val friendTuple = ("Haluk", 28,"ios developer",8.8, true) val (name, age, job,score, isPlayer) = ("Ömer", 27,"java developer",9.8, false) val (name1, age1, job1, score1, isPlayer1) = ("Halil", 27,"android developer",14.8, false) println(friendTuple._1 + " - " + friendTuple._2) println(name + " - " + score + " - " + job) |
Bütün kodlar;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
import java.util import scala.:: import scala.collection.mutable import scala.collection.mutable.ListBuffer object Collections { def main(args: Array[String]): Unit ={ val nameList: Array[String] = new Array[String](3) val ageList = Array(5,3,8,7,1,9,23) nameList(0) = "biilisim.io" nameList(1) = "cem" nameList(2) = "nehir" for (i <- 0 until nameList.length){ println(nameList(i)) } ageList.map(age => println(age)) ageList.update(0,13) //replace val minNumber = ageList.min val maxNumber = ageList.max val head = ageList.head val last = ageList.last println(minNumber + " - " + maxNumber + " - " + head + " - " + last) // 1 - 23 - 13 - 23 val newAgeList: Array[Int] = ageList.drop(3) // listenin başından 3 elaman siler newAgeList.map(age => println(age)) println("---") val numbers = (1 to 10).toArray // until de kullanılabilir. numbers.map(number => println(number)) println("--Collections--") val cities: List[String] = List("İstanbul","Sinop","Bursa","Konya") cities.foreach(city => println(city)) var list: ListBuffer[Int] = ListBuffer() list += 4 list += 7 var fruits = new ListBuffer[String]() fruits += "mandalina" fruits += "portakal" fruits.foreach(fruit => println(fruit)) val list1: List[String] = Nil val istanbul = cities.head var tailCity = cities.tail val isEmpty: Boolean = cities.isEmpty val citySet: Set[String] = Set("İzmir","Muğla","Erzurum") //citySet += "Van" // compiler error. Çünkü immutable var superLig: Set[String] = Set() superLig += "fenerbahçe" superLig += "galatasaray" superLig += "beşiktaş" superLig += "trabzonspor" var ptt: Set[String] = Set("ankaragücü") ptt += "ordu spor" ptt += "giresun spor" ptt += "giresun spor" val allTeams: Set[String] = superLig ++ ptt allTeams.foreach(team => println(team)) println("--MAP--") val immutableMap = Map(1 -> "cem", 2 -> "emir") //immutableMap += 3 -> "necip" // compiler error val mutableMap = collection.mutable.Map(1 -> "serra", 2 -> "nehir") mutableMap += 3 -> "necip" mutableMap += 4 -> "enes" var isMapEmpty: Boolean = immutableMap.isEmpty var value: Option[String] = immutableMap.get(1) if (value.nonEmpty){ println(value.get) println("map size:" + immutableMap.size) } mutableMap.foreach(key => println("key: " + key._1 + ", value: " + key._2)) mutableMap.remove(4) mutableMap.foreach(key => println("key: " + key._1 + ", value: " + key._2)) println("--TUPLES--") val friendTuple = ("Haluk", 28,"ios developer",8.8, true) val (name, age, job,score, isPlayer) = ("Ömer", 27,"java developer",9.8, false) val (name1, age1, job1, score1, isPlayer1) = ("Halil", 27,"android developer",14.8, false) println(friendTuple._1 + " - " + friendTuple._2) println(name + " - " + score + " - " + job) } } |
https://docs.scala-lang.org/overviews/collections/overview.html
Faydalı olması dileğiyle.