В Scala, как я могу сделать топ N кучи
В Scala как я могу сделать максимальную корневую кучу
Input(1.0, 2.0, 1.0, 3.0, 10.0, 100.0, ...,) // with huge List
Выходные данные Top N (когда N = 3: 100.0, 10.0, 3.0) Я не хочу сортировать весь список
Я написал так:
//(tempSilimaritites: (user1, (user2, cosSimilarity))
val similarities = tempSimilarities.groupByKey().flatMap(x => {
x._2.map(temp => (x._1, (temp._1, temp._2))).toList.sortWith((a, b) => a._2._2 > b._2._2).take(10)
}).map(x => (x._1, x._2._1, x._2._2.toString))