我有一个看起来像::
的Java函数public List<File> myFunction(){
Enumeration<File> myFiles = enumFiles();
int i = 0;
while(myFiles.hasMoreElements() && i < 50){
// i will add the element to an arraylist here
i++;
}
return "100 files from myFiles"
}
其中enumFiles()
返回文件的枚举。文件列表可以是数千或数百万。我使用hasMoreElements()
和nextElement()
来读取前50个文件。
我想要的是能够在调用myFunction()
时返回接下来的100个文件。每100个文件将从之前结束的位置开始,直到 myFiles 中没有其他元素。
我用谷歌搜索但没有找到答案。我需要一点指导如何做到这一点。
感谢
答案 0 :(得分:0)
你可能想要一个你自己的迭代器。
class LimitedIterator<T> implements Iterator<List<T>> {
private int chunkSize;
private Iterator<T> baseIterator;
public LimitedIterator(Iterator<T> base, int size) {
baseIterator = base;
chunkSize = size;
}
public boolean hasNext() {
return baseIterator.hasNext();
}
public List<T> next() {
List<T> result = new ArrayList<>(chunkSize);
for (int i = 0; i < chunkSize && baseIterator.hasNext(); i++) {
result.add(baseIterator.next();
}
return result;
}
}