当Object是List时,替换List <object>中的对象?爪哇</对象>

时间:2012-05-15 14:00:03

标签: java list object

再次问好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);
}

2 个答案:

答案 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);
    }
}