我正在尝试返回包含某种成分的食谱列表,但我的代码给了我一个奇怪的输出:ArrayList @ 40c84051。
如何制作以便输出食谱列表?
public List searchByIngredient(String target) {
List result = new ArrayList();
for (Object ingred : mList) {
Recipe i = (Recipe) ingred;
if (i.hasIngredient(target)) {
result.addLast(ingred);
}
}
return result;
}
答案 0 :(得分:0)
您所看到的可能是“System.out.println(recipeList.toString())”的结果,它只是打印了ArrayList对象的地址。
您需要在Recipe类上添加“toString()”方法,然后输出Recipes,如下所示:
ArrayList<Recipe> recipeList = ...
for (Recipe recipe : recipeList) {
System.out.println(recipe);
}
在你的食谱类中
public String toString() {
String description = "Ingredients: ";
description+= ingredienets;
// put whatever description code here you like.
return description;
}
答案 1 :(得分:0)
这样的消息通常是通过在未覆盖toString()
方法的对象上调用Object.toString()
引起的。
但令人费解的是ArrayList
覆盖了toString()
......或者更确切地说,AbstractList
会这样做。
所以我怀疑你误报了输出,或者这里发生了一些非常奇怪的事情。
请向我们展示以下代码:
一种可能性是ArrayList
不是标准java.util.ArrayList
,而是您自己编写的一些自定义类...并在默认包中声明。这可以解释为什么输出中没有包名。
答案 2 :(得分:0)
您需要在Recipe类中覆盖toString()。
public String toString()
{
//Return Customized message of Recipe information.
//such as,
return String.format("Customized message format", args)
}
然后,您尝试打印配方对象,它将打印您指定的自定义消息。