Implement ListModel and TreeModel
The default implementation of models, such as ListModelList and DefaultTreeModel assumes all data are available in the memory. It is not practical if a model has a lot of data. For huge data, it is suggested to implement your own model by loading and caching only a portion of data at a time.
To implement your own model, you could extend from AbstractListModel, AbstractGroupsModel
For a real example, please refer to Small Talk: Handling huge data using ZK.