В 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))

0 ответов

Другие вопросы по тегам