Самый простой способ сортировки списка объектов - PullRequest
17 голосов
/ 17 марта 2012

У меня есть список объектов типа A. В первой итерации я назначаю каждому объекту двойное значение 0

В настоящее времяиспользуйте класс-обертку, который хранит объект и его значение x, чтобы создать сопоставимый список.

Существует ли тип данных, предоставляемый Scala, который позволяет мне что-то вроде:

 var result = new SortedList[Double, A]
 result.insert(x,a)
 result.insert(x1,a1)
 result.insert(x2,a2)

, а затем

  println(result.mkString)

Ответы [ 3 ]

32 голосов
/ 17 марта 2012

Вы можете сделать это довольно легко с обычными списками Scala и их методом sortBy. Вот краткая сессия REPL, показывающая, как:

scala> class A(val value: Double) { override def toString = "A:" + value }
defined class A

scala> List(new A(6), new A(1), new A(3)) sortBy (_.value)
res0: List[A] = List(A:1.0, A:3.0, A:6.0)
11 голосов
/ 18 марта 2012

Используйте кортежи вместо создания нового класса-оболочки.

List((1.2, "a1"), (0.1, "a2"), (0.9, "a3")).sorted
// List((0.1,a2), (0.9,a3), (1.2,a1))
3 голосов
/ 19 марта 2013

Я иду так. Для получения лучших слов c в хэш-карте:

  def getTopCWordsDeclarative(input: mutable.HashMap[String, Int], c: Int): Map[String, Int] = {
    val sortedInput = input.toList.sortWith(_._2 > _._2)
    sortedInput.take(c).toMap
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...