Bộ sưu tập Scala - Bộ

Scala Set là một tập hợp các phần tử khác nhau theo từng cặp của cùng một loại. Nói cách khác, một Tập hợp là một tập hợp không chứa các phần tử trùng lặp. Có hai loại Bộ,immutablemutable. Sự khác biệt giữa các đối tượng có thể thay đổi và bất biến là khi một đối tượng là bất biến, bản thân đối tượng đó không thể thay đổi được.

Theo mặc định, Scala sử dụng Bộ bất biến. Nếu bạn muốn sử dụng Bộ có thể thay đổi, bạn sẽ phải nhậpscala.collection.mutable.Setlớp một cách rõ ràng. Nếu bạn muốn sử dụng cả tập hợp có thể thay đổi và tập hợp bất biến trong cùng một bộ sưu tập, thì bạn có thể tiếp tục tham khảo Tập hợp bất biến nhưSet nhưng bạn có thể tham khảo Tập hợp có thể thay đổi là mutable.Set.

Đây là cách bạn có thể khai báo các Bộ bất biến -

Cú pháp

// 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)

Trong khi xác định một tập hợp trống, chú thích kiểu là cần thiết vì hệ thống cần gán một kiểu cụ thể cho biến.

Các thao tác cơ bản trên phim trường

Tất cả các phép toán trên tập hợp có thể được biểu diễn theo ba phương pháp sau:

Sr.No Phương pháp & Mô tả
1

head

Phương thức này trả về phần tử đầu tiên của một tập hợp.

2

tail

Phương thức này trả về một tập hợp bao gồm tất cả các phần tử ngoại trừ phần tử đầu tiên.

3

isEmpty

Phương thức này trả về true nếu tập hợp trống, ngược lại là false.

Hãy thử ví dụ sau cho thấy cách sử dụng các phương pháp hoạt động cơ bản:

Thí dụ

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 )
   }
}

Lưu chương trình trên vào Demo.scala. Các lệnh sau được sử dụng để biên dịch và thực thi chương trình này.

Chỉ huy

\>scalac Demo.scala
\>scala Demo

Đầu ra

Head of fruit : apples
Tail of fruit : Set(oranges, pears)
Check if fruit is empty : false
Check if nums is empty : true

Bộ ghép nối

Bạn có thể sử dụng ++ nhà điều hành hoặc Set.++() phương thức để nối hai hoặc nhiều tập hợp, nhưng trong khi thêm tập hợp, nó sẽ xóa các phần tử trùng lặp.

Sau đây là ví dụ để nối hai tập hợp.

Thí dụ

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 )
   }
}

Lưu chương trình trên vào Demo.scala. Các lệnh sau được sử dụng để biên dịch và thực thi chương trình này.

Chỉ huy

\>scalac Demo.scala
\>scala Demo

Đầu ra

fruit1 ++ fruit2 : Set(banana, apples, mangoes, pears, oranges)
fruit1.++(fruit2) : Set(banana, apples, mangoes, pears, oranges)

Tìm các phần tử tối đa, tối thiểu trong một tập hợp

Bạn có thể dùng Set.min phương pháp để tìm ra mức tối thiểu và Set.maxphương pháp để tìm ra tối đa các phần tử có sẵn trong một tập hợp. Sau đây là ví dụ để hiển thị chương trình.

Thí dụ

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 )
   }
}

Lưu chương trình trên vào Demo.scala. Các lệnh sau được sử dụng để biên dịch và thực thi chương trình này.

Chỉ huy

\>scalac Demo.scala
\>scala Demo

Đầu ra

Min element in Set(5,6,9,20,30,45) : 5
Max element in Set(5,6,9,20,30,45) : 45

Tìm Nội dung Giá trị Chung

Bạn có thể sử dụng Set.& phương pháp hoặc Set.intersectphương pháp tìm giá trị chung giữa hai tập hợp. Hãy thử ví dụ sau để hiển thị cách sử dụng.

Thí dụ

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) )
   }
}

Lưu chương trình trên vào Demo.scala. Các lệnh sau được sử dụng để biên dịch và thực thi chương trình này.

Chỉ huy

\>scalac Demo.scala
\>scala Demo

Đầu ra

num1.&(num2) : Set(20, 9)
num1.intersect(num2) : Set(20, 9)