日期:2014-05-20  浏览次数:20711 次

数据库查找数据,用Iterator遍历数据发现的问题
代码如下:
while   (   rs.next()   )
{
    Map   map   =   new   HashMap();
        for   (   int   i   =   1;   i   <=   rsmd.getColumnCount();   i++   )
        {
        map.put(rsmd.getColumnName(i),   rs.getObject(i));
        }
    ls.add(map);
}

for   (int   i=0;i <ls.size();i++   )
{
Map   map   =   (Map)ls.get(i);
for   (Iterator   it=map.keySet().iterator();it.hasNext();)  
{
String   column_name=it.next().toString();
System.out.println(column_name);
System.out.println(map.get(column_name).toString());
}
}
显示出来的结果,表中的第一个字段跑到了最后去了,怎么样解决呢

------解决方案--------------------
map是一种无序的数据结构,把它iterator得出的还是无序集
用ArrayList应该可以解决把,直接用index
------解决方案--------------------
HashMap 是根据 hashcode 来排序的,没有规律可言,可以采用顺序的 LinkedHashMap
------解决方案--------------------
JAVA API 说:
...基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。