关于List问题

oldabc 2007-10-23 01:58:41
JdbcTemplate jt = new JdbcTemplate ( WebApp.getDataSource ( ) );
StringBuffer sql = new StringBuffer("");
sql.append("select * from userinfo where postid='"+postid+"'");
list = jt.queryForList(sql.toString());
ListIterator lt=list.listIterator();
String label="";
String value="";
while(lt.hasNext())
{
Map mp=(Map)lt.next();
label=mp.get("userid").toString();
value=mp.get("username").toString();
listdown.add(new LabelValueBean(value,label));

}
为什么查询结果放到list里,要取出userid,username要强转一下map类型,什么情况转为MAP类型.他有什么好处?
...全文
120 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fisher_hcl 2007-10-23
  • 打赏
  • 举报
回复
还是高手说得明白,学习了!
Dan1980 2007-10-23
  • 打赏
  • 举报
回复
没错,存进List的时候就是Map,只是存进去以后向上转型为Object了,所以,当你要重新取出一个元素时,就要向下转型为Map才能把它当作一个Map来用。

java 1.5以前的容器都不能区分类型的,存进去的元素都是Object。要搞清楚你得到的一个容器中究竟存的是什么类型,常常要查看api的javadoc,一般的api都会在javadoc中说明这些。

不过java 1.5加入的泛型机制解决了这个问题。在声明容器的同时就指定容器能接受的类型。这样,如果一个方法返回一个容器,只要看方法声明就知道返回的容器中存储的是什么类型的对象。比如,假设你的 jt.queryForList(sql.toString()) 方法返回的是一个List<Map>,而不是一个一般的List,那你就只需这样使用:
List<Map> list;  // 把list声明为List<Map>类型
list = jt.queryForList(sql.toString()); // 假设queryForList()返回List<Map>类型
ListIterator<Map> lt = list.listIterator(); // 得到Map类型的迭代器
Map mp = lt.next(); // 取出的元素直接是Map,无需向下转型
fisher_hcl 2007-10-23
  • 打赏
  • 举报
回复
我是菜鸟,看说得对不对,放在ListIterator中是一条记录,有2个值,转成map是为了能用关键字分别取到这2个值,如果放在ListIterator中怎么把值分开呢?
oldabc 2007-10-23
  • 打赏
  • 举报
回复
高手指定下.我问别人,有人告诉告诉我是,当数据存储到LIST类型的时候就是MAP类型.取出就用MAP的GET方法取出.如果这一一样,如何知道当存储到LIST时候就MAP类型的?怎么能知道的?

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧