在我的java类中使用scala.collection.immutable.Map

拉克吕基

我从Java代码中获得了以下异常。

 java.lang.ClassCastException: scala.collection.immutable.Map$Map1 cannot be cast to java.util.HashMap
    at au.com.vroc.udf.medianUDF.update(medianUDF.java:79)

当我将缓冲区强制转换为java.utill的HashMap时,我的spark应用程序中出现错误。这是我的代码:

    public void update(MutableAggregationBuffer buffer, Row input) {
    if (!input.isNullAt(0)) {   

        HashMap currentBuffer=(HashMap) buffer.get(0);//getting exception here
        //HashMap currentBuffer=new HashMap();  
        currentBuffer.put(input.getLong(0), input.getDouble(0));

        //currentBuffer.add(currentMap);

        buffer.update(0, currentBuffer);

    }
}

我想我必须在Java类中使用“ scala.collection.immutable.Map $ Map1”来代替Java hashmap。我可以使用“ JavaConversions”命名空间中的任何工具吗?

Anyhep将不胜感激!

J0HN

最简单的方法可能是使用Scala转换器

它应该看起来像这样(未经测试,但经过类型检查):

import scala.collections.JavaConverters

java.util.Map currentBuffer = JavaConverters.mapAsJavaMapConverter(buffer.get(0)).asJava();

请注意,它返回类型参数化的映射(即java.util.Map<K, V>),而不是java.util.HashMap示例中参数化的映射-您可能希望更改其余代码以在参数化的映射上工作,以提高类型安全性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将java.util.Map [String,Object]转换为scala.collection.immutable.Map [String,Any]

如何使用 Java 使用 scala.collection.immutable.Stream 类

在scala中,Map [_,_]和scala.collection.immutable.Map [_,_]如何具有不同的TypeTag?

scala.Some 无法转换为 scala.collection.immutable.Map 异常

排序Seq [scala.collection.immutable.Map [String,org.joda.time.DateTime]]

io.circe.Encoder [scala.collection.immutable.Map [Int,Any]]类型的离散隐式展开

RDD [scala.collection.immutable.Map [String,Any]的最大值和最小值

从Java使用scala.collection.immutable.Set的示例

如何在Java代码中使用scala.collection.immutable.List

java.lang.NoSuchMethodException:scala.collection.immutable。$ colon $ colon

java.util.Set转换为scala.immutable.Map

Scala:使用immutable.Map是否不需要导入?

不支持的文字类型类scala.collection.immutable.HashSet $ HashTrieSet

Spark:不支持的文字类型类scala.collection.immutable.Nil $ List()

在foldleft中使用collection.Map

从scala.collection.immutable.List转换为Java中的java.util.List

如何从Java中的Java列表创建scala.collection.immutable.Seq?

(1至4).toSet和(1至4).to [scala.collection.immutable.Set]之间的Scala差异?

将java.util.IdentityHashMap转换为scala.immutable.Map

无法将wrappedArray$ofRef 转换为scala.collection.immutable.Seq

当条目较少时将json转换为“ scala.collection.immutable.HashMap”时发生ClassCastException

归档时我收到一个错误,称为“值 % 不是 scala.collection.immutable.Range.Inclusive 的成员”

Java Map为什么不扩展Collection?

Intellij IDEA java.lang.NoSuchMethodError:scala.collection.immutable。$ colon $ colon.hd $ 1()Ljava / lang / Object

Apache Spark 2.1:java.lang.UnsupportedOperationException:找不到scala.collection.immutable.Set [String]的编码器

如何使用流将Map <String,Collection <XYZ >>还原为Map <XYZ,Collection <String >>

类型不匹配; 找到:scala.collection.immutable.Stream [String]必需:Play Scala中的字符串?

从scala.collection.immutable.Iterable [String]中删除第一个和最后一个Element

Spark scala.collection.immutable.$colon$colon 不是字符串模式的有效外部类型