一次从数组10中提取项目的最佳方法

mkk*_*kki 7 java arrays algorithm android

我有一个ArrayList,可以包含无限量的对象.我需要一次拉10件物品并对它们进行操作.

我能想象的是这个.

int batchAmount = 10;
for (int i = 0; i < fullList.size(); i += batchAmount) {
    List<List<object>> batchList = new ArrayList();
    batchList.add(fullList.subList(i, Math.min(i + batchAmount, fullList.size()));
    // Here I can do another for loop in batchList and do operations on each item
}
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?谢谢!

Tit*_*tus 3

你可以这样做:

int batchSize = 10;
ArrayList<Integer> batch = new ArrayList<Integer>();
for (int i = 0; i < fullList.size();i++) {
    batch.add(fullList.get(i));
    if (batch.size() % batchSize == 0 || i == (fullList.size()-1)) {
        //ToDo Process the batch;
        batch = new ArrayList<Integer>();
    }
}
Run Code Online (Sandbox Code Playgroud)

当前实现的问题是您batchList在每次迭代时创建一个,您需要batchList在循环之外声明此列表()。就像是:

int batchAmount = 10;
List<List<object>> batchList = new ArrayList();
for (int i = 0; i < fullList.size(); i += batchAmount) {
    ArrayList batch = new ArrayList(fullList.subList(i, Math.min(i + batchAmount, fullList.size()));
    batchList.add(batch);
 }
 // at this point, batchList will contain a list of batches
Run Code Online (Sandbox Code Playgroud)