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)