从arraylist转换/复制到对象数组

时间:2015-04-04 16:33:22

标签: java

我班上开始时有一个arraylist

private ArrayList<Dog> dogs;

这就是在狗类中声明狗的方式

public Dog(String name, ArrayList<Owner> owners, boolean likeBones, String food,
        int mealsPerDay);

我正在努力寻找那些喜欢骨头并将狗拯救成结果的狗。其余代码工作正常,包括.getLikesBones()。

Dog[] result = null;
for (Dog dogSearch : dogs) {

        if (dogSearch.getLikesBones()){ 
            result =dogSearch; //I know this won't work, just simply showing what I want.
        }



    }
    return result;
}

提前感谢您的帮助。

5 个答案:

答案 0 :(得分:1)

您可能不知道result大小。因此,result应声明为ArrayList而不是数组。请看下面的代码。

List<Dog> result = new ArrayList<>();

将搜索值添加到result

for (Dog dogSearch : dogs) {
  if (dogSearch.getLikesBones()){ 
     result.add(dogSearch);
  }
}

答案 1 :(得分:0)

您可以使用集合而不是使用数组

List<Dog> result = new ArrayList<Dog>();
for (Dog dogSearch : dogs) {
        if (dogSearch.getLikesBones()){ 
             result.add(dogSearch);
        }
    }
    return result;
}

答案 2 :(得分:0)

如果您将Dog[] result更改为List<Dog> result = new ArrayList<>()会更好,这样您就可以添加数据而无需担心以固定大小初始化数组。

您的代码如下所示:

List<Dog> result = new ArrayList<>();
for (Dog dogSearch : dogs) {
    if (dogSearch.getLikesBones()){ 
        result.add(dogSearch);
    }
}
return result;

如果您仍需要返回Dog[]而不是List<Dog>,请在List#toArray声明中致电return

return result.toArray(new Dog[result.size()]);

答案 3 :(得分:0)

你有两种方法可以做到这一点。您已在代码顶部声明regular array of Dogs

要使用regular array执行此操作,您需要声明int来保存数组的索引,因为常规数组没有“add”函数。所以它会是:

Dog[] result = new Dog[dogs.lenght()];
int index = 0;
for (Dog dogSearch : dogs) {

        if (dogSearch.getLikesBones()){ 
            result[index] = dogSearch;
            index++;
        }
    }
    return result;
}

否则使用狗的数组列表作为“结果”,然后执行

arrayList.Add(dogSearch);

答案 4 :(得分:0)

ArrayList<Dog> result = new ArrayList<Dog>();
for (Dog dogSearch : dogs) {

    if (dogSearch.getLikesBones()){ 
        result.put(dogSearch); 
    }

}
return result; }