Я новичок Scala. Я использую Google guava library Collections2.permutations()
метод, который принимает на вход java.util.Collection collection
Взаимодействие между Scala.List и Java.util.List
У меня есть следующий код, адаптированный из соответствующей программы Java, которую я написал.
import java.util
import com.google.common.collect.Collections2
import collection.JavaConversions._
class OptimalTSP {
def distance(point1: Point, point2: Point): Double = {
Math.sqrt(Math.pow(point2.y - point1.y, 2) + Math.pow(point2.x - point1.x, 2))
}
def findCheapestPermutation(points: java.util.List[Point]): java.util.List[Point] = {
var cost: Double = Double.MaxValue
var minCostPermutation: java.util.List[Point] = null
val permutations: util.Collection[java.util.List[Point]] = Collections2.permutations(points)
import scala.collection.JavaConversions._
for (permutation <- permutations) {
val permutationCost: Double = findCost(permutation)
if (permutationCost <= cost) {
cost = permutationCost
minCostPermutation = permutation
}
}
println("Cheapest distance: " + cost)
minCostPermutation
}
}
Вышеприведенные отлично работает, но полное имя пакета java.util.List
явно необходимо. Есть ли более идиоматический способ scala для этого, то есть передача scala List
в метод, который ожидает Java Collection
?
Вы уверены, что [это] (http://stackoverflow.com/questions/8124440/code-to-enumerate- перестановки-в-скале) не лучшее решение? Есть уже метод для этого ... –
@BoristheSpider Спасибо за указание, я адаптирую свой код на использование метода List напрямую – vsnyc