在Java代码中将Java映射转换为Scala不可变映射

时间:2016-07-07 00:29:02

标签: scala

我有一个Java类,由于各种原因需要保留在Java中。它正在使用Scala特征和需要Scala不可变映射的Scala实现实现的类上调用方法。是的,我已经看过如何使用隐式和显式代码,如果我有Java Map并且我正在使用Scala代码进行转换,但我正在尝试从Java代码进行转换,并且在Stack Overflow上没有看到类似的内容。 / p>

我正在使用Eclipse,该项目添加了Scala特性。我尝试导入scala.collection.JavaConverters,Eclipse只是给了我一个错误,说它无法找到该类,即使我在Scala Library容器中打开scala-library时可以看到该类。我正在使用Scala 2.11.8

如何编写将Java Map转换为Java代码中的Scala Map的显式代码?

2 个答案:

答案 0 :(得分:2)

为什么不简单使用 toMap

类似的东西:

pre_post_comparison <- function(sea_df, cap){  
  sea_df$bonus_points <- 0
  for(i in seq(from=1, to=length(sea_df)-2, by = 2)){
    x <- as.data.frame(sea_df[,i])
    y <- as.data.frame(sea_df[,i+1])
    is_strength <- TRUE # For now just assume 
    pairs_df <- cbind(x, y)
    pairs_df <- SEA_VALUE_LUT(pairs_df)
    colnames(pairs_df) <- c("cur_value", "pre_value")
    attach(pairs_df)
    boolean <- cur_value >=3 & ((is_strength & pre_value == 5)  | (!is_strength & pre_value == 0) | (pre_value == 2 | pre_value == 3 | pre_value == 4))
    sea_df[boolean,"bonus_points"] <- sea_df[boolean,"bonus_points"]+1
    detach(pairs_df)
  }
  print(sea_df$bonus_points)
  sea_df$bonus_points[sea_df$bonus_points > cap] <- cap
  return(sea_df$bonus_points)
}

答案 1 :(得分:0)

Convert java.util.HashMap to scala.collection.immutable.Map in java以更“现代”的方式解决问题。这只是错过了几美元。