gpt4 book ai didi

java - 如何在Scala中移植java内部函数?

转载 作者:行者123 更新时间:2023-12-02 02:57:02 24 4
gpt4 key购买 nike

如何从here移植java内部函数哪个完全包含在 Scala 中?

JavaPairRDD<Envelope, HashSet<Point>> castedResult = joinListResultAfterAggregation.mapValues(new Function<HashSet<Geometry>,HashSet<Point>>()
{
@Override
public HashSet<Point> call(HashSet<Geometry> spatialObjects) throws Exception {
HashSet<Point> castedSpatialObjects = new HashSet<Point>();
Iterator spatialObjectIterator = spatialObjects.iterator();
while(spatialObjectIterator.hasNext())
{
castedSpatialObjects.add((Point)spatialObjectIterator.next());
}
return castedSpatialObjects;
}

});
return castedResult;

由于某些 NotinferredU,我的方法如下所述,无法编译

val castedResult = joinListResultAfterAggregation.mapValues(new Function[java.util.HashSet[Geometry], java.util.HashSet[Point]]() {
def call(spatialObjects: java.util.HashSet[Geometry]): java.util.HashSet[Point] = {
val castedSpatialObjects = new java.util.HashSet[Point]
val spatialObjectIterator = spatialObjects.iterator
while (spatialObjectIterator.hasNext) castedSpatialObjects.add(spatialObjectIterator.next.asInstanceOf[Point])
castedSpatialObjects
}
})

最佳答案

当询问有关编译错误的问题时,请提供确切的错误,尤其是当您的代码不能独立存在时。

内部函数本身没问题;我的猜测是,由于上述更改, joinListResultAfterAggregation 不再是 JavaPairRDD ,而是一个普通的 RDD[(Envelope, Something)] (其中 Something 可以是 java.util.HashSetscala.collection.Set 或某些子类型),因此它的 mapValues 采用 Scala 函数,而不是 org.apache.spark.api.java.function.Function。 Scala 函数被编写为 lambda:spatialObjects: Something => ... (主体取决于 Something 实际是什么,并且在某些情况下可以省略参数类型)。

关于java - 如何在Scala中移植java内部函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42919835/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com