2012-04-29 187 views

回答

1

只需使用构造采取其他地图作为参数:

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

如果你有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); 
} 

intParams是你HashMap<String,Integer>

在那里可能有一些错别字,因为这纯粹是从袖口。您可以将objParams传递给fillReport

+0

在迭代Map时,考虑迭代entrySet()而不是keySet()。它更加高效,因为它不需要每次对键的hashCode()和equals()方法进行评估以找到相应的值。 – 2012-05-03 19:23:12

0

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

HashMap objParams = new HashMap();

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", "[email protected]"); 

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> 
相关问题