如何使用java从arraylist获取5条记录

时间:2012-10-04 11:30:14

标签: java for-loop arraylist

有人可以帮助我完成这项工作。

我有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条记录

我不确定我的解释是否清楚。

4 个答案:

答案 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());

重点观察是不要在成功读取之间重置您的计数器(i1i2i3)。

答案 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
          }
        }
      }