请教一下各位  
我下面这段代码
Map<String, Map> map = new HashMap<String, Map>();
Map<String, String> Para = new HashMap<String, String>();
sql="select * FROM [JCMES].[dbo].[User]";
result = sql_operate.Locate_Query(sql);
try {
while (result.next()) {
Para.put("whName", result.getString("PassWord"));
Para.put("sortSeq", result.getString("PassWord2"));
System.out.println(Para);
map.put(result.getString("User"), Para);
System.out.println(map);
}
} catch (SQLException e) {
e.printStackTrace();
}输出结果怎么会是这样的
{sortSeq=222222, whName=111111}
{张三={sortSeq=222222, whName=111111}}
{sortSeq=444444, whName=333333}
{张三={sortSeq=444444, whName=333333}, Admin={sortSeq=444444, whName=333333}}

解决方案 »

  1.   

    while (result.next()) {
    Para.put("whName", result.getString("PassWord"));
    Para.put("sortSeq", result.getString("PassWord2"));
    System.out.println(Para);
    map.put(result.getString("User"), Para);
    System.out.println(map);
    }
    2次循环 
    map.put(result.getString("User"), Para);
    para是同一个对象 第一个肯定会被后一个覆盖
    while (result.next()) {
    map para = new hashmap()//新new一个
    para .put("whName", result.getString("PassWord"));
    para .put("sortSeq", result.getString("PassWord2"));
    System.out.println(Para);
    map.put(result.getString("User"), Para);
    System.out.println(map);
    }