在进行数据处理的时候,有些情况下,我们需要将Hash表存入Array便于生成Dataframe或者后期调用。
我们很容易的定义一个ArrayBuffer中包含Hash表,
var priceMap = new ArrayBuffer[(String,java.util.HashMap[String,String])]()
但是,你会发现当你向外取这个Hash表的时候,会报如下错误:
scala: classcast exception: java.util.HashMap cannot be cast to scala.collection.immutable.Map
这可能是由于HashMap加入到ArrayMap后,被转化成了 HashTrieMap结构。这样的话,为了便于提出之前的HashMap,我们在写入ArrayBuffer的时候,可以先将其转化成字符串,待取出的时候再转化成HashMap,操作如下
import com.alibaba.fastjson.JSON
import scala.collection.JavaConversions._
import scala.collection.mutable
object Test {
def main(args: Array[String]): Unit = {
val map = new java.util.HashMap[String, String]()
map.put("a", "1")
// 将数据转化成字符串
val jsonstr = JSON.toJSONString(map, false)
println(jsonstr)
//取出的时候将字符串重新转化为HashMap
val map2 = JSON.parseObject(jsonstr,classOf[java.util.HashMap[String, String]])
print(map2("a"))
}
}