Scala Collection – Set

Set là collection của các phần tử không bị trùng lặp với kiểu giống nhau. Không giống như List, Set không chứa các phần tử bị trùng lặp. Set có thể là mutable hoặc immutable. Khi một object là immutable thì nó sẽ không thể bị thay đổi giá trị.

Mặc định Scala sử dụng immutable. Thêm vào scala.collection.mutable.Set để sử dụng mutable Set một cách chính xác.

Hãy xem ví dụ sau đây

val country = Set("Russia", "Denmark", "Sweden")

Set của kiểu dữ liệu Interger có thể được tạo như sau

var id : Set[Int] = Set(4,5,6,7,8,9)

Một Set rỗng có thể được tạo như sau

var age = Set()

Hoạt động cơ bản trên Set

Các hoạt động cơ bản trên Set bao gồm

  • head → Trả về phần tử đầu tiên của một Set
  • tail → Trả về tất cả các phần tử trừ phần tử đầu tiên của Set
  • isEmpty → trả về true nếu Set là trống, ngoài ra trả về false

Hãy xem ví dụ sau đây

object Student {
   def main(args: Array[String]) {
      val name = Set("Smith", "Brown", "Allen")
      val id: Set[Int] = Set()

      println( "Head of name : " + name.head )
      println( "Tail of name : " + name.tail )
      println( "Check if name is empty : " + name.isEmpty )
      println( "Check if id is empty : " + id.isEmpty )
   }
}

Ở đây chúng ta đang tạo Student object với 2 Set là nameid. Chúng ta gọi các phương thức head, tailisEmpty trên các Set này và in ra kết quả

Kết quả

Head of name : Smith
Tail of name : Set(Brown, Allen)
Check if name is empty : false
Check if id is empty : true

Ghép nối các Set

Để nối một hoặc nhiều Set sử dụng toán tử ++ hoặc phương thức Set.++() . Khi chúng ta thêm các Set vào thì những phần tử trùng nhau sẽ bị xoá đi.

Hãy xem ví dụ sau đây

object Furniture {
   def main(args: Array[String]) {
      val furniture_1 = Set("Sofa", "Table", "chair")
      val furniture_2 = Set("Bed", "Door")

       var furniture = furniture_1 ++ furniture_2
      println( "furniture_1 ++ furniture_2 : " + furniture )

      var furn = furniture_1.++(furniture_2)
      println( "furniture_1.++(furniture_2) : " + furn )
   }
}

Chúng ta đang tạo 2 Set là furniture_1 và furniture_2 và nối chúng thành furniture và furn sử dụng các toán tử ++Set.++

Kết quả

furniture_1 ++ furniture_2 : Set(Door, Sofa, Bed, Table, chair)
furniture_1.++(furniture_2) : Set(Door, Sofa, Bed, Table, chair)

Giá trị chung trong các Set

Phương thức Set.& hoặc Set.intersect được dùng để tìm kiếm các giá trị giống nhau trong 2 hoặc nhiều Set

Xem ví dụ bên dưới đây

object Numbers {
   def main(args: Array[String]) {
      val n1 = Set(11,45,67,78,89,86,90)
      val n2 = Set(10,20,45,67,34,78,98,89)

      println( "n1.&(n2) : " + n1.&(n2) )
      println( "n1.intersect(n2) : " + n1.intersect(n2) )
   }
}

Kết quả

n1.&(n2) : Set(78, 89, 45, 67)
n1.intersect(n2) : Set(78, 89, 45, 67)

Phần tử lớn nhất và nhỏ nhất trong Set

Phương thức Set.min dùng để tìm phần tử nhỏ nhất và phương thức Set.max tìm phần tử lớn nhất trong các phần tử trong Set

Xem ví dụ sau đây

object Numbers {
   def main(args: Array[String]) {
      val num1 = Set(125,45,678,34,20,322,10)

      println( "Minimum  element in the Set is : " + num1.min )
      println( "Maximum  element in the Set is : " + num1.max )
   }
}

Chúng ta đang tìm các số lớn nhất và nhỏ nhất trong Set num1 sử dụng phương thức minmax

Minimum  element in the Set is : 10
Maximum  element in the Set is : 678

Các phương thức hữu ích

Một vài phương thức trong Set:

  • def contains(elem: X): Boolean → Trả về True nếu phần tử được chứa trong Set, ngoài ra trả về false
  • def last: X → Trả về phần tử cuối cùng
  • def size: Int → Trả về số lượng các phần tử trong immutable Set
  • def product: X →  Trả về tíc các phần tử trong immutable Set sử dụng toán tử *
  • def sum: X → Trả về tổng các phần tử trong immutable Set sử dụng toán tử +
  • def toList: List[X] → Chuyển đổi Set sang List
  • def toSeq: Seq[X] → Chuyển đổi Set sang Seq
  • def toArray: Array[X] → Chuyển đổi Set sang Array
  • def subsetOf(that: Set[X]): Boolean → Trả về true nếu Set này là tập con của that ví dụ tất cả phần tử của Set cũng là phần tử của that
  • def mkString: String → Hiển thị tất cả các phần tử của Set trong một string.

You May Also Like

About the Author: Nguyen Dinh Thuc

Leave a Reply

Your email address will not be published.