I have an arraybuffer of custom object Employee which has empname, empno, joiningdate
I wanted to sort ArrayBuffer on joiningdate with desc order and get top 10
This is how I did but I think there can be a better alternative or optimized solution for the same
Cannot do the same in db query since i am using cassandra db where I cannot do the same for non cluster columns
val employeeList: mutable.Buffer[Employee]// getting from db
val employeeMap = employeeList.groupBy((p: Employee) => p.joiningdate)
val employeeDescSortedMap = new mutable.TreeMap[java.util.Date,
mutable.Buffer[Employee]]()(Ordering.ordered[java.util.Date].reverse)
val limitedSizeEmployeeMap = new mutable.TreeMap[java.util.Date, mutable.Buffer[Employee]]()
var count: Long = 10
employeeDescSortedMap ++= employeeMap
employeeDescSortedMap.foreach(employee => {
if (count > 0) {
limitedSizeEmployeeMap += employee
count -= 1
}
})
limitedSizeEmployeeMap