簡體   English   中英

從 txt 文件創建 Object,無需對每個 object 進行硬編碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM