0

誰かが私がこの仕事をするのを手伝ってくれますか?

私は3つの配列リストを持っています

ArrayList alDeposits = new ArrayList(); 
ArrayList alWithDrawals = new ArrayList(); 
ArrayList alChecks = new ArrayList();

長さがnのこの3つの配列リストすべてを考えてみましょう。ここで私の質問は、最後のインデックスまでfor Loopを使用して、この3つすべてのarrayListから5つのレコードを読み取る方法です。
例えば

alDeposits.length = 8; 
alWithDrawals.length = 7; 
alChecks = 13; 

最初のforループの実行では、alDepositsから5つのレコードを取得し、alWithDrawals、alChecksと同じです。

2回目は、alDepositsから3レコード、alWithDrawalsから2レコード、alChecksから5レコードを取得します。

3回目のループ実行では、alDeposits、alWithDrawalsから0レコードを取得し、alChecksから残りの3レコードを取得します。

説明が明確かどうかわかりません。

4

4 に答える 4

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

于 2012-10-04T11:40:26.853 に答える
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);

}
于 2012-10-04T12:11:57.387 に答える
0

あなた自身の質問に答えた方法で、それはまさにあなたがそれを得る方法です!!!

まず最初に、pop() と push() が可能な配列リストの代わりに、スタックまたはキューを使用する必要があります。

次に、スタック/キューのサイズを確認するだけです。それが > = to 5 pop() 5 回、そうでない場合は pop() 0 - stack.size() 回です。

stack.size() がすでにゼロの場合、次のスタックに移動します。

于 2012-10-04T11:38:23.097 に答える
-1

私があなたの質問をよく理解していれば、あなたの質問に対する 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
          }
        }
      }
于 2012-10-04T11:42:31.603 に答える