Java 在iReport中初始化HashMap变量

Java 在iReport中初始化HashMap变量,java,groovy,hashmap,jasper-reports,ireport,Java,Groovy,Hashmap,Jasper Reports,Ireport,我想在iReport(3.7.3)中创建一个变量$V{myMap},并用以下内容初始化映射: "key1":"value1","key2":"value2","key3:"value3" ... 然后在我的报告中,我将有一个带有以下表达式的文本字段: $V{myMap}.get("key1") 而且我必须去 "value1" 我必须采取什么步骤才能做到这一点 我在这里读到: 设置变量属性的以下步骤: 设置变量的以下属性: Name: myMap Variable class: java

我想在iReport(3.7.3)中创建一个变量$V{myMap},并用以下内容初始化映射:

"key1":"value1","key2":"value2","key3:"value3" ...
然后在我的报告中,我将有一个带有以下表达式的文本字段:

$V{myMap}.get("key1")
而且我必须去

"value1"
我必须采取什么步骤才能做到这一点


我在这里读到:

设置变量属性的以下步骤:

设置变量的以下属性:

Name: myMap
Variable class: java.util.HashMap()
Reset type: None
Calculation: System
Variable expression: new java.util.HashMap()
但是初始化它呢

我知道我可以使用groovy并使用本文中所述的映射:

但我不知道该走哪一步


提前感谢您分享您的知识

我会尝试使用属性
initial value expresion
并尝试使用以下内容对hashmap进行初始化:

new HashMap<String , String>() {{
put(stringkey1, stringvalue1);
put(stringkey2, stringvalue2);
put(stringkey3, stringvalue3);
}};
newhashmap(){{
put(stringkey1,stringvalue1);
put(stringkey2,stringvalue2);
put(stringkey3,stringvalue3);
}};

这是创建变量的方法

<variable name="myMap" class="java.util.HashMap" resetType="None" calculation="System">
    <variableExpression><![CDATA[['key1':'value1', 'key2':'value2', 'key3':'value3']]]></variableExpression>
</variable>
会得到

value1

如果需要使用单个条目创建一个单一的、不可变的映射,可以使用Collections.singletonMap():


在iReport 5.6.0中,
java.util.HashMap
不能作为变量的类型选择,但您可以手动插入它。在“变量表达式”中插入
[“key1”:“value1”,“key2”:“value2”]
。这个解决方案仍然有效
value1
<variable name="hints" class="java.util.Map">
    <initialValueExpression><![CDATA[Collections.singletonMap("key", "value")]]></initialValueExpression>
</variable>
$V{hints}.get("key")