再次问好stackoverflow, 我有一个关于对象列表的问题。
我已经尝试过编写一些东西,但是找不到它。 当这些对象是它们自己的列表时,如何在对象列表中找到对象?
这是我到目前为止所做的:
食谱是以下列表:{modification [],成分[],recipeBookName,recipeName}
public void removeFromBook(Recipe recipeName) {
recipes = getRecipes();
emptyRecipe = getEmptyPage(recipeBookName);
现在,我想通过emptyRecipe替换具有recipeName的配方。 我认为这将是:
for(r in recipes) {
if(r.recipeName == recipeName) {
list.replace(Recipe, emptyRecipe)
} else {
}
}
任何想法? :)
这是Recipe类的构造函数:
public String[] modifications;
public String[] ingredients;
public String recipeName;
public String partOfRecipeBook;
public Recipe(String recipeName, String[] modifications, String[] ingredients, String recipeBookName){
setRecipeModifications(modifications);
setRecipeIngredients(ingredients);
setRecipeName(recipeName);
setRecipeBookName(recipeBookName);
}
答案 0 :(得分:2)
你的方法看起来很好,除了你应该用等于比较字符串:
if(r.recipeName.equals(recipeName)) {
现在更简单的方法是将食谱存储在地图中:
Map<String, Recipe> recipes = new HashMap<String, Recipe>();
recipes.put("Pizza with Lobster", new Recipe());
当您想要替换食谱时:
recipes.put("Pizza with Lobster", emptyRecipe);
旧的食谱已被替换。
答案 1 :(得分:2)
使用带有对象的List(其中一些是数组)不是定义新对象Recipe并使用它的最佳方式。
public class Recipe {
private List<Ingredient> ingredients;
private List<Modification> modifications;
private String bookName;
private String book;
}
然后更换成分更加简单。例如给食谱一个像
这样的功能public void replaceIngredent(Ingredient oldIngredient, Ingredient newIngredient) {
int index = ingredients.indexOf(oldIngredient);
if (index != -1) {
ingredients.remove(index);
ingredients.add(index, newIngredient);
}
}