从 txt 文件创建对象,无需对每个对象进行硬编码
Create Object from txt file without hard coding every object
我正在解决一个问题,我有一个 txt 文件需要转换成对象。我的文件格式是:
阿拉巴马州::蒙哥马利::205764::155.4
州名和首都将作为 加载到哈希图中。我已成功加载 Hashmap,但现在我需要创建每个单独的资本对象。想知道是否有一种方法可以在不对每个 Capital Object 进行硬编码的情况下执行此操作。也许是一个循环?不确定我如何在不硬编码的情况下命名它们。
到目前为止,这是我的主要方法:
public static void main(String[] args) throws Exception {
Scanner fileReader = new Scanner(new BufferedReader(new FileReader("MoreStateCapitals.txt")));
Map<String, Object> stateCapitals = new HashMap<>();
while (fileReader.hasNextLine()) {
String[] columns = fileReader.nextLine().split("::");
stateCapitals.put(columns[0], columns[1]);
}
Set<String> states = stateCapitals.keySet();
Collection<Object> capitals = stateCapitals.values();
}
这是我的 Capital Class,带有 getter、setter 和 Constructor
private String name;
private int population;
private double squareMileage;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPopulation() {
return population;
}
public void setPopulation(int population){
this.population = population;
}
public double getSquareMileage() {
return squareMileage;
}
public void setSquareMileage(double squareMileage){
this.squareMileage = squareMileage;
}
public Capital(String name, int population, double squareMileage) {
this.name = name;
this.population = population;
this.squareMileage = squareMileage;
}
}
编辑:txt 文件中的第一个值唯一用于 hashmap 中的键,它不参与对象的创建
我认为您需要更改行:
stateCapitals.put(columns[0], columns[1]);
进入
stateCapitals.put(columns[0], new Capital(columns[1], Integer.parseInt(columns[2]), Double.parseDouble(columns[3]));
这样您将使用构造函数创建对象。这假设您从中读取数据的文件中没有错误 - 如果文件不正确,您可能需要分析 creation/insertion 步骤之前的行。
此外,尽管 Object
的 Collection
可以工作,您可能希望将其更改为 Collection<Capitals>
以便能够访问 class 的所有方法].
希望对您有所帮助。祝你好运。
我正在解决一个问题,我有一个 txt 文件需要转换成对象。我的文件格式是:
阿拉巴马州::蒙哥马利::205764::155.4
州名和首都将作为
到目前为止,这是我的主要方法:
public static void main(String[] args) throws Exception {
Scanner fileReader = new Scanner(new BufferedReader(new FileReader("MoreStateCapitals.txt")));
Map<String, Object> stateCapitals = new HashMap<>();
while (fileReader.hasNextLine()) {
String[] columns = fileReader.nextLine().split("::");
stateCapitals.put(columns[0], columns[1]);
}
Set<String> states = stateCapitals.keySet();
Collection<Object> capitals = stateCapitals.values();
}
这是我的 Capital Class,带有 getter、setter 和 Constructor
private String name;
private int population;
private double squareMileage;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPopulation() {
return population;
}
public void setPopulation(int population){
this.population = population;
}
public double getSquareMileage() {
return squareMileage;
}
public void setSquareMileage(double squareMileage){
this.squareMileage = squareMileage;
}
public Capital(String name, int population, double squareMileage) {
this.name = name;
this.population = population;
this.squareMileage = squareMileage;
}
}
编辑:txt 文件中的第一个值唯一用于 hashmap 中的键,它不参与对象的创建
我认为您需要更改行:
stateCapitals.put(columns[0], columns[1]);
进入
stateCapitals.put(columns[0], new Capital(columns[1], Integer.parseInt(columns[2]), Double.parseDouble(columns[3]));
这样您将使用构造函数创建对象。这假设您从中读取数据的文件中没有错误 - 如果文件不正确,您可能需要分析 creation/insertion 步骤之前的行。
此外,尽管 Object
的 Collection
可以工作,您可能希望将其更改为 Collection<Capitals>
以便能够访问 class 的所有方法].
希望对您有所帮助。祝你好运。