Sembra un batcher . Quindi potresti chiamarlo così.
public class HeavyWorkBatch {
ArrayList<File> myList = new ArrayList<>();
public void AddToBatch(File f) {
myList.add(f);
}
public void DoHeavyWork() {
for (File f: myList) {
/// ...
}
}
}
// Note there is a conspicuous lack of cleanup...
// What happens when AddToBatch is called again after DoHeavyWork?
// Is the class reusable so that DoHeavyWork should clear the ArrayList?
Tuttavia, la raccolta interna non è necessaria in base al campione fornito. E viste le domande che ho posto sopra, potresti semplificare proprio questo:
public static void DoHeavyWork(File f) {
/// ...
}
E poi costruisci la lista separatamente, e itera separatamente dal fare il lavoro. In questo modo, l'operazione del file può essere ragionata e riutilizzata separatamente dalla raccolta. Perché la creazione di un batch è una preoccupazione separata dall'operare su un file.
myList.forEach((file) -> {
HeavyWork.DoHeavyWork(file);
});
Se è necessario creare un batch da un elenco più grande, è possibile farlo in altri modi .