当前位置: 首页 > 知识库问答 >
问题:

在Jasper Reports/Scala中使用映射数组

端木权
2023-03-14

我有以下Scala代码,它使用映射数组作为数据源(JRMapArrayDataSource)生成Jasper报告。如果所有的值都具有相同的类型(例如字符串),那么这很好,但是当我试图在HashMap中组合字符串和整数时,我会得到一个编译错误:

 val map1 = new HashMap[String,Object](Map("f1"->"aaa1", "f2"-> "aaa2", "f3" -> 1 ))
 val map2 = new HashMap[String,Object](Map("f1"->"bbb1", "f2"-> "bbb2", "f3" -> 2 ))

 val dataSource = new JRMapArrayDataSource(Array(map1, map2));

 val params = new HashMap[String,Object]()
 val jasperPrint = JasperFillManager.fillReport("test1.jasper", params, dataSource);
 JasperExportManager.exportReportToPdfFile(jasperPrint, "test1.pdf");

在map1和map2中,我得到以下内容:

重载的方法构造函数HashMap,其替换选项:(X$1:java.util.Map[_<:String,_<:Object])java.util.HashMap[String,Object](X$1:Int)java.util.HashMap[String,Object]不能应用于(Scala.collection.immutable.map[String,any])

由于报告中有两个字符串字段(F1F2)和一个int字段(F3),所以HashMap中需要有这个组合。有什么想法吗?

共有1个答案

汪高岑
2023-03-14

答案是使用任何:

val map1 = new HashMap[String,Any](Map("f1"->"aaa1", "f2"-> "aaa2", "f3" -> 1 ))
 类似资料:
  • 我有一个列为col1、col2、col3的数据帧。col3是下面定义的映射[String,String] 我按col1、col2进行分组,并使用collect_list进行聚合,以获得映射数组并存储在col4中。 然而,我希望将col4作为一个单独的映射,并将所有映射合并。目前我有: 预期输出 使用udf是否理想? 感谢您的帮助。谢谢

  • 下面的行不编译,因为编译没有找到“hashmap$hashtriemap” 40) 最后,我的示例如下所示: 注我没有使用Kryo特定的Akka特性,我使用它作为一个通用的序列化框架。火花也一样。没有直接插入火花或akka配置。

  • Scala 集合 Map(映射)是一种可迭代的键值对(key/value)结构。 所有的值都可以通过键来获取。 Map 中的键都是唯一的。 Map 也叫哈希表(Hash tables)。 Map 有两种类型,可变与不可变,区别在于可变对象可以修改它,而不可变对象不可以。 默认情况下 Scala 使用不可变 Map。如果你需要使用可变集合,你需要显式的引入 import scala.collecti

  • 我在spark中有一个数据集,只有一列,这列是一个Map[String,Any]。我想逐行映射数据集,然后逐键映射映射映射列,计算每个键的值,并使用新数据生成与前一个相同类型的新数据集。 例如: 我想在每个值的末尾加上“”,结果将是一个数据类型的数据集,如下所示: 谢谢Nir

  • 我正在尝试将Scala UDF( 的(嵌套)Scala对象? 代码 Scala自定义项 下沉 错误 谢谢

  • 我在Postgresql中有一个数据类型为json的表,我必须在Scala code中为case class field选择该字段的合格映射(我不使用slick,我可以直接设置类似sql.json的内容)。我考虑下一个变体: <代码>java。lang.Object,并进行以下验证 <代码>播放。libs。Json或io。circe。Json 但我不能选择其中一个,我也没有其他可能的候选人。 用于