Подтвердить что ты не робот

Самый простой способ сортировки списка объектов

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

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

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

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

а затем

  println(result.mkString)
4b9b3361

Ответ 1

Вы можете сделать это довольно легко с помощью обычных списков 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)

Ответ 2

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

List((1.2, "a1"), (0.1, "a2"), (0.9, "a3")).sorted
// List((0.1,a2), (0.9,a3), (1.2,a1))

Ответ 3

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

  def getTopCWordsDeclarative(input: mutable.HashMap[String, Int], c: Int): Map[String, Int] = {
    val sortedInput = input.toList.sortWith(_._2 > _._2)
    sortedInput.take(c).toMap
  }