[英]Create Object from txt file without hard coding every object
我正在解決一個問題,其中我有一個需要轉換為對象的 txt 文件。 我的文件格式是:
阿拉巴馬州::蒙哥馬利::205764::155.4
state 名稱和大寫字母將作為 <String, Object> 加載到 hashmap 中。 我已經成功加載了 Hashmap,但現在我需要創建每個單獨的 Capital Object。 想知道是否有辦法做到這一點,而無需對每個 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 中的鍵,它不參與 object 的創建
我相信你需要改變這條線:
stateCapitals.put(columns[0], columns[1]);
進入
stateCapitals.put(columns[0], new Capital(columns[1], Integer.parseInt(columns[2]), Double.parseDouble(columns[3]));
這樣,您將使用您的構造函數來創建 object。 這假設您從中讀取數據的文件中沒有錯誤 - 如果文件不正確,您可能需要在創建/插入步驟之前分析這些行。
此外,即使您的Object
Collection
工作,您可能希望將其更改為Collection<Capitals>
以便能夠訪問 class 的所有方法。
我希望它有所幫助。 祝你好運。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.