학교에 대한 약속이 있고 일부 ArrayList에 문제가 있습니다. 모든 줄마다 하나의 항목이있는 입력 파일이 있습니다. 이 항목에는 정수와 최대 네 개의 문자열이 있습니다. 이 입력 파일은 필름이 촬영 된 위치에 관한 파일입니다. 정수는 내 경우에는 movieID이고 문자열은 위치입니다. 그러나 모든 영화가 4 개 위치를 가지고있는 것은 아닙니다. 즉, 내 프로그램이 파일을로드하려고 할 때 모든 행에 5 개의 입력란이 필요하기 때문에 오류가 발생하며 1 또는 2 또는 위치가있는 영화가 있기 때문에 절대 발생하지 않습니다. 여러 파일을로드해야하기 때문에 데이터 로더 클래스를 사용합니다. 내 다른 파일에는 각 행에 특정 수의 항목과 필드가 있으므로로드하는 것은 문제가되지 않습니다. 로드 프로세스는 파일을 배열 목록에 추가 한 다음 필요한 개체를 만드는 방식으로 수행됩니다. 빈 필드를 이해하고 동적으로 처리 할 수있는 프로그램이 필요하다는 것을 알고 있습니다. 예를 들어 동영상에 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' 함수가 한 줄로 압축 되었습니까? 'movieLoader'는 어떤 종류의 객체입니까? – Michael
하나의 String 변수에서 입력 파일의 행을 읽은 다음 split을 적용하여 arrayList의 값을 읽으려고합니다. –
@Michael이 편집을 확인하십시오. 방금 코드를 reuploaded. – hristoforidisc