2017-09-27 6 views
0

からのデータのチャンクを返す私が見えるの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

おそらく自分のイテレータが必要です。

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; 
    } 
} 
関連する問題