我只想拥有一种用户可以添加元素的主ArrayList
(足够简单),但对于这些元素中的每一个,我希望用户能够查看另一个{{1}特定于该元素。
例如,它可能就像一本自定义食谱书 - 用户添加一顿饭的名称,当他们选择该餐时,他们可以查看/修改该餐所需的成分。
这个想法看起来很简单,但我找不到一个允许动态列表和该列表上的每个项目都有另一个动态列表的解决方案。
答案 0 :(得分:3)
我要展示的是我对一个好设计的看法,虽然知道有很多方法可以解决这个问题。
您的主列表:
List<Meal> meals = new ArrayList<>();
现在Meal
是一个包含Ingredient
列表的类,而且,让我们给这顿饭命名!
public class Meal{
private List<Ingredient> ingredients = new ArrayList<>();
private String name;
//getters, setters, constructor if you will
}
你的“成分”就是一个由你想要的任何东西组成的简单类,例如:
public class Ingredient{
private String name;
private String grams;
//getters, setters, constructor if you will
}
根据您的需要,这应该足够了,如果您想要更灵活,可以使用接口或超类。
答案 1 :(得分:0)
我喜欢Roels方法,它是最可扩展的,但如果您不想创建新类,这是另一种方法。有一个字符串的hashmap到字符串的arraylist。
HashMap meals = new HashMap<String,ArrayList<String>>();
ArrayList<String> ingredients = new ArrayList();
ingredients.add("potatoes");
ingredients.add("butter");
meals.put("mashed potatoes",ingredients);