我有一个包含ID,名称,地址和状态实例变量的Person类
我想使用JFileChooser打开一个txt文件,然后通过读入来填充Person类类型ArrayList。 我得到堆叠以将读入ID设置为Person对象 这是读入和演绎arraylist的方法
public static ArrayList<Person> load(String fileName) throws IOException {
ArrayList<person> lines = null;
BufferedReader reader;
try {
JFileChooser chooser = new JFileChooser();
chooser.setDialogTitle("Load which file?");
int result = chooser.showOpenDialog(null);
if (result == JFileChooser.APPROVE_OPTION) {
File file = chooser.getSelectedFile();
if (file != null) {
fileName = file.getCanonicalPath();
reader
= new BufferedReader(new FileReader(fileName));
lines = new ArrayList<>();
String line = reader.readLine();
String data[];
while ((line = reader.readLine()) != null) {
data = line.split(",");
Person s = new Person();
s.setName(data[0]);
s.setAddress(data[1]);
s.setState(data[2]);
//I got stack how to set ID bcs it has no set method
s.getAddress();
s.getName();
s.getState();
lines.addAll(Arrays.asList(s));
}
reader.close();
return lines;
}
}
} catch (FileNotFoundException exp) {
exp.printStackTrace();
} catch (IOException exp) {
exp.printStackTrace();
}
return lines;
}
}
答案 0 :(得分:1)
如果您决定在分配后不想更改ID,那么您可以重载类构造函数,如下所示
public Person(int id){
this.id = id;
}
然后在你的方法里面做
data = line.split(",");
Person s = new Person(whatever_if_you_wanana_set);
答案 1 :(得分:0)
如果没有任何setter或构造函数需要ID
,则无法设置ID
。此外,你为什么要使用
lines.addAll(Arrays.asList(s));
由于s
是Person
的对象,您只需调用lines.add(s);
即可将人物对象添加到列表中。