我有一个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();
}
}
答案 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()));
}