如何将HashMap <string,integer> param转换为Map </string,integer>

时间:2012-04-29 03:09:57

标签: map jasper-reports hashmap type-conversion

我想调用JasperFillManager.fillReport(filePath +“。jasper”,param,con); param应该接受类型Map。有没有解决方案

4 个答案:

答案 0 :(得分:2)

只需使用另一个地图作为参数的构造函数:

Map<String, Object> map2 = new HashMap<String, Object>(map);

见这个例子:

import java.util.HashMap;
import java.util.Map;

public class Test5 {

    public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        map.put("1", 1);
        Map<String, Object> map2 = new HashMap<String, Object>(map);
        // etc...
    }
}

答案 1 :(得分:1)

如果您有HashMap<String,Integer>,并且需要将其转换为HashMap<String,Object>,那么以下内容应该有效:

HashMap<String, Object> objParams = new HashMap<String, Object>();
for (String key : intParams.keyValues()) {
    Integer intValue = intParams.get(key);
    objParams.put(key, intValue);
}

intParamsHashMap<String,Integer>

在那里可能会有一些拼写错误,因为这纯粹是在袖口之外。

然后您可以将objParams传递给fillReport

答案 2 :(得分:0)

如果未在HashMap中指定值类型,Java会隐式为其指定一种对象。 在这种情况下,您只需要将原始地图声明为

HashMap objParams = new HashMap();

答案 3 :(得分:0)

您的.java文件

String url="jdbc:mysql://127.0.0.1:3306/database";
String username="root";
String password="";
String database="database";

Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con = DriverManager.getConnection(url, username, password);
JasperReport jc=JasperCompileManager.compileReport("F:\\pro\\report.jrxml"); //give your report.jrxml file path

//create hashmap to send data to report.key should same to report parameter
HashMap para = new HashMap();
para .put("name", "chamod");
para .put("email", "chamodck@gmail.com");

JasperPrint print = JasperFillManager.fillReport(jc,para,new JREmptyDataSource());
JasperViewer.viewReport(print);
con.close();

您的report.jrxml文件文本字段应该是这样的

<textFieldExpression class="java.lang.String"><![CDATA[$P{name}]]></textFieldExpression>
<textFieldExpression class="java.lang.String"><![CDATA[$P{email}]]></textFieldExpression>