在String中将String转换为对象

时间:2015-04-02 09:50:12

标签: java

我有一个HashSet,我需要存储可用的成分。

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需要将成分存储为成分类的对象。

如何将String转换为Ingredient,以便上面的代码行有效? 谢谢你的帮助。

*编辑* 类成分:

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();
    }
}

2 个答案:

答案 0 :(得分:1)

由于file.next()返回String,并且您需要在其中创建Ingredient对象,所以使用String作为参数的构造函数重载构造函数(I我假设您的Ingredient类有一个String字段,您可以在其中存储实际的成分名称),使用它创建所需的Ingredient对象,然后将其存储在{{1 }}

答案 1 :(得分:1)

您已经有Ingredient的构造函数接受String。只需在向HashSet添加值时使用它:

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