追記:やっぱりちゃんと動かなかったのでコンパイルしながら修正。
これだとOutOfMemoryError: Java heap spaceが起こってしまう。多分breakでのlabelのつけ方がおかしいせい。
普段breakは多重ループを抜け出すときに遠くに置くから普通の使い方が分からなくなってしまったorz
forループを使いすぎるのは良くないというけれど、じゃあどうすりゃ良いの?と思う。 Genericsは配列で使うとなぜかエラーになるので使わないことした。
とりあえず何も考えずにコードを書いてみたけど動くのかなぁ…。。。。
// mergeが終わった後のString[] itemNewを使って
dataRecord = new ArrayList[itemNew.length];
for(int i = 0; i < dataRecord.length; i++){
dataRecord[i] = new ArrayList();
dataRecord[i].add(itemNew[i]);
}
// preDataRecord→dataRecordへの移動
for(int i = 0; i < dataRecord.length;i++){
goNext:
for(int j = 0; j < preDataRecord.length; j++){
if(((String) dataRecord[i].get(0)).equals((String) preDataRecord[j].get(0))){
// k = 0はitemNameになることに注意
for(int k = 1; k < preDataRecord[j].size();k++){
dataRecord[i].add(preDataRecord[j].get(k))
}
break goNext;
}
}
// preDataRecordが見つからない場合はdataRecordに""空白を挿入
for(int k = 1; k < dataRecord[i].size();k++){
dataRecord[i].add(" ")
}
}
0 件のコメント:
コメントを投稿