Kolekcje Scala - zestaw
Zestaw Scala to zbiór par różnych elementów tego samego typu. Innymi słowy, zestaw to kolekcja, która nie zawiera zduplikowanych elementów. Istnieją dwa rodzaje zestawówimmutable i mutable. Różnica między obiektami zmiennymi i niezmiennymi polega na tym, że gdy obiekt jest niezmienny, sam obiekt nie może zostać zmieniony.
Domyślnie Scala używa niezmiennego zestawu. Jeśli chcesz użyć mutowalnego zestawu, musisz zaimportowaćscala.collection.mutable.Setklasa jawnie. Jeśli chcesz używać zarówno zmiennych, jak i niezmiennych zestawów w tej samej kolekcji, możesz nadal odwoływać się do niezmiennego zestawu jakoSet ale możesz odwołać się do mutable Set as mutable.Set.
Oto jak możesz zadeklarować niezmienne zestawy -
Składnia
// 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)
Podczas definiowania pustego zestawu adnotacja typu jest konieczna, ponieważ system musi przypisać konkretny typ do zmiennej.
Podstawowe operacje na planie
Wszystkie operacje na zbiorach można wyrazić za pomocą następujących trzech metod -
Sr.No | Metody i opis |
---|---|
1 | head Ta metoda zwraca pierwszy element zestawu. |
2 | tail Ta metoda zwraca zestaw składający się ze wszystkich elementów oprócz pierwszego. |
3 | isEmpty Ta metoda zwraca wartość true, jeśli zestaw jest pusty, w przeciwnym razie false. |
Wypróbuj następujący przykład pokazujący użycie podstawowych metod operacyjnych -
Przykład
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 )
}
}
Zapisz powyższy program w formacie Demo.scala. Poniższe polecenia służą do kompilowania i wykonywania tego programu.
Komenda
\>scalac Demo.scala
\>scala Demo
Wynik
Head of fruit : apples
Tail of fruit : Set(oranges, pears)
Check if fruit is empty : false
Check if nums is empty : true
Zestawy łączące
Możesz użyć jednego z nich ++ operator lub Set.++() metoda łączenia dwóch lub więcej zestawów, ale podczas dodawania zestawów usunie zduplikowane elementy.
Oto przykład łączenia dwóch zestawów.
Przykład
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 )
}
}
Zapisz powyższy program w formacie Demo.scala. Poniższe polecenia służą do kompilowania i wykonywania tego programu.
Komenda
\>scalac Demo.scala
\>scala Demo
Wynik
fruit1 ++ fruit2 : Set(banana, apples, mangoes, pears, oranges)
fruit1.++(fruit2) : Set(banana, apples, mangoes, pears, oranges)
Znajdź maks., Min. Elementów w zestawie
Możesz użyć Set.min metoda, aby znaleźć minimum i Set.maxmetoda, aby znaleźć maksimum elementów dostępnych w zestawie. Poniżej znajduje się przykład pokazujący program.
Przykład
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 )
}
}
Zapisz powyższy program w formacie Demo.scala. Poniższe polecenia służą do kompilowania i wykonywania tego programu.
Komenda
\>scalac Demo.scala
\>scala Demo
Wynik
Min element in Set(5,6,9,20,30,45) : 5
Max element in Set(5,6,9,20,30,45) : 45
Znajdź wkładki dotyczące wspólnych wartości
Możesz użyć jednego z nich Set.& metoda lub Set.intersectmetoda, aby znaleźć wspólne wartości między dwoma zestawami. Wypróbuj poniższy przykład, aby pokazać użycie.
Przykład
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) )
}
}
Zapisz powyższy program w formacie Demo.scala. Poniższe polecenia służą do kompilowania i wykonywania tego programu.
Komenda
\>scalac Demo.scala
\>scala Demo
Wynik
num1.&(num2) : Set(20, 9)
num1.intersect(num2) : Set(20, 9)