Scala Collection – Tuple

Tuple là một scala collection chứa nhiều giá trị giống nhau hoặc khác nhau kiểu dữ liệu để chúng có thể được truyền đi. Không giống như array và list, tuple có thể chứa các object với kiểu khác nhau. Scala Tuple là immutable

Hãy xem ví dụ bên dưới đây

val s1 = (12,"Harry")

Ở đây chúng ta khai báo một Tuple s1 chứa student ID với kiểu là integer và tên của student với kiểu là String.

Tuple s1 ở trên chúng ta cũng có thể khai báo như sau

val s1 = new Tuple2(12,"Harry")

Kiểu của Tuple dựa trên số phần tử được chứa bên trong và kiểu dữ liệu của các phần tử này.  (12, "Harry") có kiểu là Tuple2[Int, String]

Tuple giới hạn tối đa chỉ chứa được 22 phần tử. Đối với mỗi Tuple với kiểu TupleN , điều kiện 1 <= N <= 22. Chúng ta hãy cùng xem ví dụ sau để hiểu làm thể nào để truy cập vào một Tuple. Chúng ta có một Tuple Integer.

 val m1 = (20,12,16,4)

Các phần tử của Tuple m1 có thể được truy cập bằng cách gọi m1._1 cho phần tử đầu tiên, m1._2 cho phần tử thứ 2. Chúng ta có thể làm tương tự như vậy với các phần tử khác.

val mul = m1._1* m1._2*m1._4

Chúng ta đang thử truy cập phần tử thứ 1, thứ 2 và thứ 4 của Tuple m1 và thực hiện nhân các giá trị lại với nhau và lưu trữ trong biến mul.

object Multiply {
  def main(args: Array[String]) {
    val m1 = (20, 12, 16, 4)

    val mul = m1._1 * m1._2 * m1._4

    println("Result is : " + mul)
  }
}

Kết quả

Result is : 960

Lặp trên Tuple

Phương thức Tuple.productIterator() lặp tất cả các phần tử chứa trong Tuple

Nào chúng ta hãy cùng xem ví dụ in ra tên của các sinh viên dùng vòng lặp trên Tuple

object Iterate {
   def main(args: Array[String]) {
      val names = ("John","Smith","Anderson","Steve","Rob")
      
      names.productIterator.foreach{ i => println("Value = " + i )}
   }
}

Chúng ta tạo một Tuple names và sử dụng phương thức  productIterator để lặp và in ra tên của các sinh viên.

Kết quả

Student Names are :
John
Smith
Anderson
Steve
Rob

Hoán đổi các phần tử Tuple

Phương thức Tuple.swap được dùng để hoán đổi các phần tử của Tuple.

object Swap {
   def main(args: Array[String]) { 
     val id = new Tuple2(12,34)
     println("Swapped Tuple Id is:" + id.swap)
   }
}

Kết quả

Swapped Tuple Id is:(34,12)

Chuyển thành string

Phương thức Tuple.toString() nối tất cả các phần tử trong Tuple thành string

Hãy cùng xem ví dụ sau

object StringConversion {
  def main(args: Array[String]) {
    val student = new Tuple3(12, "Rob", "IT")

    println("Concatenated String: " + student.toString())
  }
}

Kết quả

Concatenated String: (12,Rob,IT)

 

You May Also Like

About the Author: Nguyen Dinh Thuc

Leave a Reply

Your email address will not be published.