Вы говорите, что хотите отфильтровать «список строк».Поэтому я полагаю, что ваш ввод может выглядеть следующим образом.
val lst = List("1,1,4", "1,1060,2", "3,123,5", "4,1210,5", "4,1213,4")
В этом случае возникает проблема проведения численных сравнений String
элементов.
"4" < "5" //true
"14" > "5" //false
Вы можете разыгратьот String
до Int
перед сравнением, но это также должно включать тесты на неудачу приведения.
Это немного другой подход, который просто пропускает все строки rating
, числовые или другие, которые оцениваются как большиечем "4"
.Строки, которые не split()
в правильное количество подстрок отфильтрованы.
lst.map(_.split(",")).collect{
case Array(uID,aID,r) if r.length > 1 || r > "4" => (uID,aID)
}
//res0: List[(String,String)] = List((3, 123), (4, 1210))