The use case is to keep the consumer of the data set implementation agnostic so that it can deal with larger data sets if they are encountered, but still retain most of the simplicity when the current data set easily fits in memory.