私は学校のためのassingmentを持って、私はいくつかのArrayListに問題があります。私はすべての行に1つのエントリを持つ入力ファイルを持っています。このエントリは、整数と最大4つの文字列を持ちます。この入力ファイルは、フィルムが撮影された場所に関するものです。整数は私の場合のmovieIDで、文字列は場所です。しかし、すべての映画に4つの場所があるわけではありません。つまり、私のプログラムがファイルを読み込もうとするとエラーが返されます。なぜなら、すべての行に5つのフィールドが必要だからです。私はいくつかの異なるファイルを読み込まなければならないので、データローダークラスを使用します。私の他のファイルは、各行に特定の数の項目とフィールドを持っているので、それらをロードすることは問題ではありません。ロード処理は、ファイルを配列リストに追加し、必要なオブジェクトを作成することによって実行されます。私は何とか空のフィールドを理解し、動的にそれらを扱うプログラムを必要としていることを知っています。例えば、映画は3つの場所を持つので、4番目のフィールドは空ですが、まだわかりません。助言がありますか?ありがとうございました!動的なArrayListのフィールド
これは私のLocationsLoaderクラスです。
package dataLoader;
import java.util.ArrayList;
import dataModel.Locations;
public class LocationsLoader extends AbstractFileLoader<Locations>{
public int constructObjectFromRow(String[] tokens, ArrayList<Locations> locations) {
int movieID;
List<String> loc = new List();
movieID = Integer.parseInt(tokens[0]);
loc = tokens[]; // What goes here?
Locations l;
l = new Locations(movieID, loc);
locations.add(l);
System.out.println(l);
//System.out.println(locations.toString());
return 0;
}
}
そして、これは私の場所のクラスである:あなたがここに
String[] tokens = new String[numFields];
for (int i = 0; i < numFields; i++) {
tokens[i] = tokenizer.nextToken();
}
を配列を埋める
package dataModel;
public class Locations {
private int movieID;
private List<String> loc;
public Locations(int otherMovieID, List<String> otherLocations) {
this.movieID = otherMovieID;
this.loc = otherLocations;
}
public int getMovieID() {
return movieID;
}
public void setMovieID(int id) {
this.movieID = id;
}
public String getLocations(int index) {
return loc.get(index);
}
}
}
なぜ 'fullDataLoad'関数を1行に圧縮したのですか? 'movieLoader'はどのような種類のオブジェクトですか? – Michael
入力ファイルの行を1つのString変数で読み込み、splitを適用してarrayList内の値を読み取ろうとします。 –
@Michaelが編集を確認してください。私はコードを再アップロードしました。 – hristoforidisc