数据库查找数据,用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 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。