在程序中需要返回一个数据集合的时候, 应该尽量选用标准的Java集合类接口,例如List, Map等.
有时也见到有人选择返回Iterator对象, 一般情况下这不是很好的选择. Iterator对象的功能有限, 而且存在一种即时消费的特点,
我们一般不能把一个Iterator保存起来留待以后使用. 而且JDK提供的集合类也不能从Iterator直接构造出来,例如没有 new
ArrayList(myIterator), 这样为数据复制造成一定的困难.
Iterator在理论上的好处之一是可以支持延迟加载数据, 但是实现起来比较繁琐而且单条加载也是比较低效的. 在witrix平台中如果需要延迟加载数据集合, 我一般选择使用IPageViewer接口
interface IPageViewer{
public List getAll();
public int getTotalCount();
public List listPage(int startPos, int maxCount);
}
IPageViewer通过getAll()可以转换到List, 也可以通过 new Pager(pageViewer,pageSize).itemIterator()得到单条数据的Iterator, 其内部采用分页加载模式. 搜索引擎返回的结果和数据库查询的结果都可以使用这一接口.
Iterator在理论上的好处之一是可以支持延迟加载数据, 但是实现起来比较繁琐而且单条加载也是比较低效的. 在witrix平台中如果需要延迟加载数据集合, 我一般选择使用IPageViewer接口
interface IPageViewer{
public List getAll();
public int getTotalCount();
public List listPage(int startPos, int maxCount);
}
IPageViewer通过getAll()可以转换到List, 也可以通过 new Pager(pageViewer,pageSize).itemIterator()得到单条数据的Iterator, 其内部采用分页加载模式. 搜索引擎返回的结果和数据库查询的结果都可以使用这一接口.
博客指出程序返回数据集合时,应尽量选用标准Java集合类接口如List、Map,不建议选Iterator,因其功能有限、即时消费且难用于数据复制,延迟加载实现繁琐低效。还介绍了witrix平台用IPageViewer接口处理延迟加载,搜索引擎和数据库查询结果可用该接口。
499

被折叠的 条评论
为什么被折叠?



