WalzoneInterview Prep
📞 Interviewing soon? Practice with a realistic AI mock phone interview — it calls you, then scores you. First 15 min FREE →

Scala · Intermediate · question 23 of 100

Explain how pattern matching can be used with Lists and Tuples in Scala.?

📕 Buy this interview preparation book: 100 Scala questions & answers — PDF + EPUB for $5

Pattern matching is a powerful technique in functional programming languages, including Scala. It allows you to destructure and extract values from complex data structures like Lists and Tuples while providing an elegant, readable syntax.

Here, I’ll explain how pattern matching can be used with Lists and Tuples in Scala through some examples.

### Lists

In Scala, ‘List‘ is an immutable linear sequence that is either empty or a non-empty list with a head value and a tail that is also a ‘List‘. Pattern matching on Lists allows you to handle cases where a List is empty, has a single element, or has a head and tail.

Consider the following examples:

def listToString[A](list: List[A]): String = list match {
  case Nil => "The list is empty"
  case head :: Nil => s"List has one element: $head"
  case head :: tail => s"List has multiple elements: $head, ..., ${tail.last}"
}

val emptyList = List()
val singleElementList = List(1)
val multipleElementList = List(1, 2, 3)

println(listToString(emptyList)) // The list is empty
println(listToString(singleElementList)) // List has one element: 1
println(listToString(multipleElementList)) // List has multiple elements: 1, ..., 3

In the ‘listToString‘ function above, we use pattern matching with the ‘::‘ operator to match the different cases of input Lists.

### Tuples

Tuples are immutable, fixed-size collections of multiple elements, where each element can be of a different type. Pattern matching on Tuples allows you to destructure the Tuple and match on its constituent elements.

Consider the following example:

def tupleToString(tuple: (Any, Any)): String = tuple match {
  case (a, b) if a == b => s"Tuple elements are equal: $a"
  case (a: Int, b: Int) => s"Tuple elements are integers: $a and $b"
  case (a: String, b: String) => s"Tuple elements are strings: $a and $b"
  case (a, b) => s"Tuple elements are $a and $b"
}

val equalTuple = (5, 5)
val intTuple = (1, 2)
val stringTuple = ("hello", "world")
val mixedTuple = (1, "hi")

println(tupleToString(equalTuple)) // Tuple elements are equal: 5
println(tupleToString(intTuple)) // Tuple elements are integers: 1 and 2
println(tupleToString(stringTuple)) // Tuple elements are strings: hello and world
println(tupleToString(mixedTuple)) // Tuple elements are 1 and hi

In the ‘tupleToString‘ function above, we use pattern matching to match different cases of input Tuples, including equal elements, integer elements, and string elements.

Understanding pattern matching with Lists and Tuples helps you level up your Scala programming skills and work efficiently with complex data structures in a clean, concise, and idiomatic way.

Reading is step one. Saying it out loud is the interview. Our AI interviewer calls your phone and runs a realistic Scala interview — then scores it.
📞 Practice Scala — free 15 min
📕 Buy this interview preparation book: 100 Scala questions & answers — PDF + EPUB for $5

All 100 Scala questions · All topics