0

私はネイティブの Java プログラマーではありません。Web サービス API のクライアントを作成しています。API は基本的に配列引数を必要とします。

XML ファイルを解析し、レコードを作成してから、この API を使用して一括 INSERT を作成しています。

問題は、この API は一度に 200 レコードしか挿入できないことです。これは、呼び出し時に配列が 200 レコード以下しか持てないことを意味します。

事前にレコード数がわからないため、レコードを ArrayList に保存し、後で .ToArray() を使用して配列に変換します。

APIObject[] invoiceArray = invoiceObjectlist.toArray(new APIObject[invoiceDetailObjectlist.size()]);

API によって引き起こされる 200 の制限の問題のため、ArrayList 内のすべてのレコードが挿入されるまで、これらの配列を 200 のチャンクで作成する必要があります。

現在、配列リストをループしてカウンターを維持できると考えています。カウンター = 200 の場合、新しい配列を作成し、インデックス ポインターを維持することによってそのポイントにすべての要素を挿入するか、200 レコードごとに新しい配列リストに要素をプッシュし、それを配列に変換して挿入を実行できます。

JAVAでこれを行うためのよりエレガントで効率的な方法は何ですか?

ありがとう。

4

1 に答える 1

5
List<APIObject[]> chunks = new ArrayList<APIObject[]>();
for (int i = 0; i < bigList.size(); i += 200) {
  APIObject[] chunk = bigList.subList(i, Math.min(bigList.size(), i + 200))
    .toArray(new APIObject[200]);
  chunks.add(chunk);
}
于 2012-12-17T00:05:29.453 に答える