有人可以帮助我完成这项工作。
我有3个arraylist
ArrayList alDeposits = new ArrayList();
ArrayList alWithDrawals = new ArrayList();
ArrayList alChecks = new ArrayList();
让我们说这三个arraylist都有n个长度。现在我的问题是如何使用for循环直到最后一个索引从这三个arrayList中读取5条记录。
E.g。
alDeposits.length = 8;
alWithDrawals.length = 7;
alChecks = 13;
首先进行循环运行我将从alDeposits获得5条记录,并且与alWithDrawals相同,alChecks
第二次我将从alDeposits获得3条记录,从alWithDrawals获得2条记录,从alChecks获得5条记录
第三次循环运行我将从alDeposits得到0记录,alWithDrawals和alChecks的剩余3条记录
我不确定我的解释是否清楚。
答案 0 :(得分:0)
在某种程度上,你已经回答了自己的问题,这正是你如何得到它的!
首先,您应该使用堆栈或队列而不是数组列表,您可以使用pop()和push()。
然后只需检查堆栈/队列的大小(如果是)>比= 5 pop()5次pop()0 - stack.size()次。
如果stack.size()已经ZERO移动到下一个堆栈。
答案 1 :(得分:0)
只需维护3个计数器即可查看您的列表
int i1 = 0;
int i2 = 0;
int i3 = 0;
ArrayList alDeposits = new ArrayList();
ArrayList alWithDrawals = new ArrayList();
ArrayList alChecks = new ArrayList();
do {
ArrayList<Object> result = new ArrayList<Object>();
for (int i = 0; i1 < alDeposits.size() && i < 5; i1++) {
result.add(alDeposits.get(i1));
i++;
}
for (int i = 0; i2 < alWithDrawals.size() && i < 5; i2++) {
result.add(alWithDrawals.get(i2));
i++;
}
for (int i = 0; i3 < alChecks.size() && i < 5; i3++) {
result.add(alChecks.get(i3));
i++;
}
//now do something with result
} while (i1 != alDeposits.size() || i2 != alWithDrawals.size() || i3 != alChecks.size());
重点观察是不要在成功读取之间重置您的计数器(i1
,i2
和i3
)。
答案 2 :(得分:0)
//You will need to create a 'max(a, b, c)' method, this is pseudo-code
maxSize = max(alDeposits.size(),alWithDrawals.size(),alChecks.size());
//increment index with step=5
for(int index = 0;index < maxSize;index += 5){
//get 5 records or less
for(int i=index; i<(index+5) && i<alDeposits.size(); i++)
alDeposits.get(i);
for(int j=index; j<(index+5) && j<alWithDrawals.size(); j++)
alWithDrawals.get(j);
for(int k=index; k<(index+5) && k<alChecks.size(); k++)
alChecks.get(k);
}
答案 3 :(得分:-1)
如果我理解你的问题,对你的问题的回答是:
ArrayList alDeposits = new ArrayList();
ArrayList alWithDrawals = new ArrayList();
ArrayList alChecks = new ArrayList();
while (!alDeposits.isEmpty() || !alWithDrawals.isEmpty() || !alChecks.isEmpty()) {
//get record 5 times until list is empty
for (int i=0 ; i<5; i++) {
if (!alDeposits.isEmpty()) {
alDeposits.remove(0);//get record
}
if (!alWithDrawals.isEmpty()) {
alWithDrawals.remove(0);//get record
}
if (!alChecks.isEmpty()) {
alChecks.remove(0);//get record
}
}
}