, как указано в заголовке, у меня есть SortedSet с пользовательским порядком.Набор содержит объекты класса Edge (представляющие ребро на графе).С каждым ребром связана стоимость, а также начальная и конечная точки.
case class Edge(firstId : Int, secondId : Int, cost : Int) {}
Мой порядок сортировки ребер SortedSet выглядит следующим образом (это для алгоритма A *):
object Ord {
val edgeCostOrdering: Ordering[Edge] = Ordering.by { edge : Edge =>
if (edge.secondId == goalId) graphRepresentation.calculateStraightLineCost(edge.firstId, goalId) else edge.cost + graphRepresentation.calculateStraightLineCost(edge.secondId, goalId)
}
}
Однако после того, как я применил указанное упорядочение к набору и попытался отсортировать ребра, которые имеют разные начальные / конечные точки, но одинаковую стоимость - в наборе остается только последнее обнаруженное ребро.
Например:
val testSet : SortedSet[Edge] = SortedSet[Edge]()(edgeOrder)
val testSet2 = testSet + Edge(1,4,2)
val testSet3 = testSet2 + Edge(3,2,2)
println(testSet3)
Только отпечатки (3,2,2)
Разве это не отдельные объекты?Они имеют одинаковое значение только для одного поля, поэтому неужели Set не сможет это обработать?