到 Google 资讯主页   
EasyJF首页   资料   源码   软件    论坛   网站    
   使用帮助    
    该信息为本站MyRSS系统缓存内容,部分图片及附件有可能无法正常使用.easyjf.comBlogJava无关,不对该信息负责.通过http://kb.csdn.net/keyword/java//../../java/Articles/200603/396fbcbb-514f-43c6-9f17-846fb5d971cb.html访问该信息的原始内容.
页面功能  【加入收藏】 【推荐给朋友】 【字体:  】 【关闭】   
一个取到ResultSet后返回Iterator的例子
作者: 来源:BlogJava  发布时间:2006-03-15 00:00:00.0

在Jdon.com里面看到的,觉得很值得借鉴
原文:http://www.jdon.com/jive/thread.jsp?forum=16&thread=302

看下面比较:

public List getUsers() 
ResultSet rs 
= userDbQuery();
List retval 
= new ArrayList();
while (rs.next()) {
retval.add(rs.getString(
1));
}

return retval;
}
上面是个我们采取返回Collection后最常用的方法,将ResultSet中的用户名加入List再返回,显然这很耗费内存。

使用Iterator返回:
public Iterator getUsers() {
final ResultSet rs = userDbQuery();
return new Iterator() {
private Object next;

public void hasNext() {
if (next == null{
if (! rs.next()) {
return false
}
 
next 
= rs.getString(1);
}

return true;
}


public Object next() {
if (! hasNext()) {
throw new NoSuchElementException();
}

String retval 
= next;
next 
= null;
return retval;
}


public void remove() {
throw new UnsupportedOperationException("no remove allowed");
}

}

}

这个Javabean只是做了一个指针传递作用,将调用本Javabean的指针传递到ResultSet,这样既提高了效率,节约了内存,又降低了偶合性,这是堪称中间件典型的示范。



luckyrobbie 2006-03-15 16:56

 
相关文章
 
页面功能  【加入收藏】 【推荐给朋友】 【字体:  】 【关闭】   


EasyJF.com 2006 隐私政策 使用EasyJF前必读