2015-04-02 71 views
-4

我有一個HashSet,我需要存儲可用的成分。將字符串轉換爲java中的對象

HashSet<Ingredient> availableIngreds = new HashSet<>(); 

可用配料從文件中讀取。

Scanner file = new Scanner(new File(fileName));  
    while (file.hasNext()) { 
     availableIngreds.add(file.next());    //Non working code 
    } 

    System.out.println("*** Available ingredients ***"); 
    for (Ingredient i : availableIngreds) { 
     System.out.println(i); 
    } 

我的問題是,該文件包含字符串(麪粉,糖,牛奶等)的成分。

我的HashSet需要存儲成分作爲對象的成分。

如何將字符串轉換爲成分以便上面的代碼行起作用? 謝謝你的幫助。

*編輯* 類成分:

public class Ingredient { 

    private String iName; 

    public Ingredient(String aName) { 
     iName = aName; 
    } 

    public String getName() { 
     return iName; 
    } 

    public String toString() { 
     return iName; 
    } 

    public boolean equals(Object rhs) { 
     return iName.equals(((Ingredient)rhs).iName); 
    } 

    public int hashCode() { 
     return iName.hashCode(); 
    } 
} 
+1

如果沒有看到「成分」,我們無法幫助您。簡單的答案是:「Ingredient」本身只需要一種方法來完成工作,或者(如果有層次結構),您需要一個「IngredientFactory」來了解層次結構並可以進行映射。沒有什麼神奇的「做到這一點,它會工作」的解決方案,你只需要做這項工作。 – 2015-04-02 09:53:16

+0

您必須創建新的配料對象並將其字符串或其變量發送給承包商或其他地方,然後將字符串轉換成配料變量。 – 2015-04-02 09:54:33

+0

謝謝您的時間。我現在添加了成分類。 – user2939293 2015-04-02 09:59:05

回答

1

您已經有一個接受字符串的Ingredient的構造函數。將值添加到HashSet時,只需使用它:

while (file.hasNext()) { 
    availableIngreds.add(new Ingredient(file.next())); 
} 
+0

這正是我期待的!非常感謝 :-) – user2939293 2015-04-02 10:03:48

1

由於file.next()返回String,你需要從它Ingredient對象創建,過載與一個採取String作爲參數的構造函數(我假設你的Ingredient類有一個String字段,你可以在其中存儲實際配料名稱),用它創建你想要的對象Ingredient,然後將它存儲在你的Hashmap中。