case class Item(a: Int, b: Int, label: String)
object Main:
// Sort by a, then b
def sortData(items: List[Item]): List[Item] =
items.sortBy(i => (i.a, i.b))
// Print all items
def printData(items: List[Item]): Unit =
items.foreach(i => println(s"(${i.a}, ${i.b}, ${i.label})"))
// Find first item by label
def findByLabel(items: List[Item], label: String): Option[Item] =
items.find(_.label == label)
// Filter by a
def filterByA(items: List[Item], value: Int): List[Item] =
items.filter(_.a == value)
def main(args: Array[String]): Unit =
val data = List(
Item(7, 2, "python"),
Item(8, 3, "c"),
Item(3, 5, "c++"),
Item(4, 1, "c#"),
Item(3, 2, "java"),
Item(7, 1, "go"),
Item(1, 2, "rust")
)
val sorted = sortData(data)
println("Sorted data:")
printData(sorted)
println("\nSearching for 'java':")
findByLabel(sorted, "java").foreach(println)
println("\nFiltering items where a == 7:")
val filtered = filterByA(sorted, 7)
printData(filtered)
/*
run:
Sorted data:
(1, 2, rust)
(3, 2, java)
(3, 5, c++)
(4, 1, c#)
(7, 1, go)
(7, 2, python)
(8, 3, c)
Searching for 'java':
Item(3,2,java)
Filtering items where a == 7:
(7, 1, go)
(7, 2, python)
*/