i'm writing a method that take a list: List[(String, Int)]
, x:(String, Int)
and a n: Int
parameters and return a List[(String, Int)]
The list
parameter represents the input list, the x
element represents the element to add to the list, the n
represents the maximum dimension of the list.
The method has the following behavior:
- First of all check if the list has
n
elements. - If
list
has less thann
elements, the method add thex
elements to the list. - Otherwise if the list contain an elements less than
x
, the method remove the minimum element from the list, and add thex
element to the list.
I've implemented the method as the following:
def method(list: List[(String, Int)], x: (String, Int), n: Int) = {
if(list.size < n)
list :+ x
else {
var index = -1
var min = 10000000//some big number
for(el <- 0 to list.size) {
if(list(el)._2 < x._2 && list(el)._2 < min) {
min = list(el)._2
index = el
}
}
if(index != -1) {
val newList = list.drop(index)
newList :+ x
}
else list
}
}
Exist a way to express this behavior in a more clean way??